ES6λΆν° λμ
λ μλ°μ€ν¬λ¦½νΈμ κ°μ²΄μΈ λ§΅(Map)κ³Ό μ
(Set)μ κΈ°μ‘΄μ μλ£κ΅¬μ‘°μΈ κ°μ²΄μ λ°°μ΄κ³Ό λΉμ·νμ§λ§ μ°¨μ΄μ μ΄ λΆλͺ
μ‘΄μ¬ν©λλ€. μ΄λ² μ±ν°μμλ κ°μ²΄μ λ°°μ΄κ³Ό λ€λ₯Έ λ§΅κ³Ό μ
μ νΉμ§μ μμ보μ.
2. Object vs Map
Objectμ ν€λ Stringμ΄λ©°, Mapμ λ¬Έμμ΄μ΄ μλ κ°λ ν€λ‘ μ€μ ν μ μλ€.
Mapμ ν¬κΈ°λ₯Ό κ°λ¨ν λ°©λ²μΌλ‘ κ°μ Έμ¬ μ μλ€.
Mapμ μΆκ°λ μμλλ‘ λ°λ³΅νλ€.
3. λ§΅(Map) κ°μ²΄ μμ±
λ§΅μ ν€κ° μλ λ°μ΄ν°λ₯Ό μ μ₯νλ€λ μ μμ κ°μ²΄μ μ μ¬νμ§λ§ λ§΅μ ν€μ λ€μν μλ£νμ νμ©νλ€λ μ μμ μ°¨μ΄κ° μλ€.
λ¨Όμ λ§΅ κ°μ²΄ μμ±νλ λ°©λ²μ λν΄ μμ보μ.
3-1. λΉ Map κ°μ²΄ μμ±
3-2. [ν€, κ°] ννμ μ€μ²© λ°°μ΄μ μ λ¬νμ¬ Map κ°μ²΄ μμ±
κΈ°λ³Έ μμ± λ°©λ²

λ§μ½, μ€λ³΅λλ ν€κ° μ‘΄μ¬ν κ²½μ° λ§μ§λ§ κ°μ΄ μ μ©λλ€.

[ν€, κ°]μμ κ°μ κ°μ²΄κ° λ μ μλ€.

[ν€, κ°]μμ ν€λ κ°μ²΄κ° λ μ μμ§λ§ κ³ μ ν κ°μ΄ λ μ μλ€.

3-3. Map.set(key, value): keyλ₯Ό μ΄μ©ν΄ valueλ₯Ό μ μ₯
κΈ°λ³Έ μ¬μ© λ°©λ²

체μ΄λ λ°©λ²
map.setμ νΈμΆν λλ§λ€ λ§΅ μμ μ΄ λ°νλλ€. μ΄λ₯Ό μ΄μ©νμ¬ map.setμ 체μ΄λ(chaining)ν μ μλ€.

3-4. Object.entries(obj): νλ²ν κ°μ²΄λ₯Ό κ°μ§κ³ λ§΅(Map) λ§λ€κΈ°
νλ²ν κ°μ²΄λ₯Ό κ°μ§κ³ λ§΅(Map)μ λ§λ€κ³ μΆμΌλ©΄ λ΄μ₯ λ©μλ Object.entries(obj)λ₯Ό νμ©ν΄μΌ νλ€. μ΄ λ©μλλ κ°μ²΄μ ν€-κ° μμ μμ([key, value])λ‘ κ°μ§λ λ°°μ΄μ λ°ννλ€.
μλ₯Ό λ€μ΄ μλμ κ°μ νλ²ν κ°μ²΄κ° μλ€.
μμ objκ°μ²΄λ₯Ό Object.entries(obj)μ μΈμλ‘ λ£κ² λλ©΄ ν€-κ° μμ μμ([key, value])λ‘ κ°μ§λ λ°°μ΄μ λ°ννλ€. (μλμ μ½λ λ° μ¬μ§ μ°Έκ³ )
entreisμ κ° μμκ° [ν€, κ°] μμΈ λ°°μ΄μ΄λ€. κ·Έλ¬λ―λ‘ new Map()μ μ λ¬νμ¬ μλ‘μ΄ λ§΅μ λ§λ€ μ μλ€.
4. Mapμ μ£Όμ λ©μλμ νλ‘νΌν°
4-1. Map.get(key)
keyμ ν΄λΉνλ κ°μ λ°ννλ€. keyκ° μ‘΄μ¬νμ§ μμΌλ©΄ undefinedλ₯Ό λ°ννλ€.
mapμ μ¬μ©ν λ mapμ μ© λ©μλ set, get λ±μ μ¬μ©νμ. κΈ°μ‘΄ κ°μ²΄μμ μ¬μ©νλ λ°©λ²μ mapμ μΌλ° κ°μ²΄μ²λΌ μ·¨κΈνκ² λμ΄ μ¬λ¬ μ μ½μ΄ μκΈ΄λ€.
4-2. Map.has(key)
keyκ° μ‘΄μ¬νλ©΄ true, μ‘΄μ¬νμ§ μμΌλ©΄ falseλ₯Ό λ°ννλ€.
4-3. Map.delete(key)
keyμ ν΄λΉνλ κ°μ μμ νλ€.
4-4. Map.clear()
λ§΅ μμ λͺ¨λ μμλ₯Ό μ κ±°νλ€.
μμμ κ°μλ₯Ό λ°ννλ€.
4-6. Map.keys()
κ° μμμ ν€λ₯Ό λͺ¨μ λ°λ³΅ κ°λ₯ν(iterable, μ΄ν°λ¬λΈ) κ°μ²΄λ₯Ό λ°ννλ€.
4-7. Map.values()
κ° μμμ κ°μ λͺ¨λ μ΄ν°λ¬λΈ κ°μ²΄λ₯Ό λ°ννλ€.
4-8. Map.entries()
μμμ [ν€, κ°]μ ν μμΌλ‘ νλ μ΄ν°λ¬λΈ κ°μ²΄λ₯Ό λ°ννλ€. μ΄ μ΄ν°λ¬λΈ κ°μ²΄λ for...ofλ°λ³΅λ¬Έμ κΈ°μ΄λ‘ μ°μΈλ€.
μλλ for...ofλ°λ³΅λ¬Έμ μ¬μ©νμ¬ [ν€, κ°] μμ λμμΌλ‘ μννλ μ½λμ΄λ€.
λ λ°λ³΅λ¬Έμ κ²°κ³Όλ κ°λ€.
λ§΅μ λ°°μ΄κ³Ό μ μ¬νκ² λ΄μ₯ λ©μλ forEachλ μ§μνλ€.

4-9. Object.fromEntries
λ§΅μ κ°μ²΄λ‘ λ°κΎΈκΈ° μν΄μλ Object.fromEntriesλ₯Ό μ¬μ©νλ©΄ λλ€. μ΄ λ©μλλ κ° μμκ° [ν€, κ°] μμΈ λ°°μ΄μ κ°μ²΄λ‘ λ°κΏμ€λ€.
νμ§λ§ κ΅³μ΄ map.entries()λ₯Ό νμ§μκ³ Object.fromEntries() λ©μλμ μΈμλ‘ λ§΅(Map)μ μ λ¬ν΄λ λλ€.
Object.fromEntriesλ μΈμλ‘ μ΄ν°λ¬λΈ κ°μ²΄λ₯Ό λ°κΈ° λλ¬Έμ κΌ λ°°μ΄μ μ λ¬ν΄μ€ νμλ μλ€.(λ§΅λ μ΄ν°λ¬λΈ κ°μ²΄μ΄λ€.)
μ¦, μλμ κ°μ΄ μμ μ½λλ₯Ό μμ ν μ μλ€.
μλ λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Diveμ±
μ 보며 곡λΆνλ μ μ΄ μλ€. κ·Έ μ±
μ λμλ λ΄μ© μ€ νλκ° λ°λ‘ μ€λ 곡λΆν λ§΅(Map)μ λν΄ λ΄€λ κΈ°μ΅μ΄ μλ€. λΉμμλ μ λ§ λ~~μΆ© λ³΄κ³ λκ²ΌκΈ° λλ¬Έμ μ€λ 곡λΆνλ©΄μλ λ§μ΄ μμνκ² λκΌλ€. λν μ΄ν°λ¬λΈμ κ°μ κ°λ
λ μ€λλ§μ 보λ κ²μ΄κΈ°μ 머리μμ΄ λ³΅μ‘ν΄μ‘λ€. λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Diveμ±
μ λ€μ 보면μ μλ°μ€ν¬λ¦½νΈμ κΈ°λ³ΈκΈ°λ₯Ό ννν λ€μ§ μ μλλ‘ νμ. μ²μλΆν° λ€μ 보며 νλνλ λ΄ κ²μΌλ‘ λ§λ€μ΄ 보μ! μλ§ κ·Έ λ μλ λ΄μ©λ³΄λ€λ μλ°μ€ν¬λ¦½νΈκ° μλνλ μ리, μμν κ°λ
μ λ¨Όμ μ 리νλ©° 곡λΆνμ§ μμκΉ μΆλ€.
λ§΅μ λν λλμ λ°λ³΅κ°λ₯ν κ°μ²΄μ΄λ―λ‘ Array.forEach()λ©μλλ₯Ό μ¬μ©ν μ μλ€λ μ μ΄ μ κΈ°νμλ€. λΉμ°ν for...ofꡬ문λ μ¬μ©νλ μ½ν
λ₯Ό νκ³ κ³΅λΆν λ λ§΅μ μ νλνλλ‘ ν΄μΌκ² λ€.
λ§΅κ³Ό μ
[JavaScript]Map κ°μ²΄
π
2022-08-08