Map
1. κ°μ
ES6λΆν° λμ λ μλ°μ€ν¬λ¦½νΈμ κ°μ²΄μΈ λ§΅(Map)κ³Ό μ (Set)μ κΈ°μ‘΄μ μλ£κ΅¬μ‘°μΈ κ°μ²΄μ λ°°μ΄κ³Ό λΉμ·νμ§λ§ μ°¨μ΄μ μ΄ λΆλͺ μ‘΄μ¬ν©λλ€. μ΄λ² μ±ν°μμλ κ°μ²΄μ λ°°μ΄κ³Ό λ€λ₯Έ λ§΅κ³Ό μ μ νΉμ§μ μμ보μ.
2. Object vs Map
Objectμ ν€λ Stringμ΄λ©°, Mapμ λ¬Έμμ΄μ΄ μλ κ°λ ν€λ‘ μ€μ ν μ μλ€.
Mapμ ν¬κΈ°λ₯Ό κ°λ¨ν λ°©λ²μΌλ‘ κ°μ Έμ¬ μ μλ€.
Mapμ μΆκ°λ μμλλ‘ λ°λ³΅νλ€.
3. λ§΅(Map) κ°μ²΄ μμ±
λ§΅μ ν€κ° μλ λ°μ΄ν°λ₯Ό μ μ₯νλ€λ μ μμ κ°μ²΄μ μ μ¬νμ§λ§ λ§΅μ ν€μ λ€μν μλ£νμ νμ©νλ€λ μ μμ μ°¨μ΄κ° μλ€.
λ¨Όμ λ§΅ κ°μ²΄ μμ±νλ λ°©λ²μ λν΄ μμ보μ.
3-1. λΉ Map κ°μ²΄ μμ±
let map = new 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-5. Map.size
μμμ κ°μλ₯Ό λ°ννλ€.

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λ μΈμλ‘ μ΄ν°λ¬λΈ κ°μ²΄λ₯Ό λ°κΈ° λλ¬Έμ κΌ λ°°μ΄μ μ λ¬ν΄μ€ νμλ μλ€.(λ§΅λ μ΄ν°λ¬λΈ κ°μ²΄μ΄λ€.)
μ¦, μλμ κ°μ΄ μμ μ½λλ₯Ό μμ ν μ μλ€.
5. Conclusion
μλ
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Diveμ± μ 보며 곡λΆνλ μ μ΄ μλ€. κ·Έ μ± μ λμλ λ΄μ© μ€ νλκ° λ°λ‘ μ€λ 곡λΆν λ§΅(Map)μ λν΄ λ΄€λ κΈ°μ΅μ΄ μλ€. λΉμμλ μ λ§ λ~~μΆ© λ³΄κ³ λκ²ΌκΈ° λλ¬Έμ μ€λ 곡λΆνλ©΄μλ λ§μ΄ μμνκ² λκΌλ€. λν μ΄ν°λ¬λΈμ κ°μ κ°λ λ μ€λλ§μ 보λ κ²μ΄κΈ°μ 머리μμ΄ λ³΅μ‘ν΄μ‘λ€.λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Diveμ± μ λ€μ 보면μ μλ°μ€ν¬λ¦½νΈμ κΈ°λ³ΈκΈ°λ₯Ό ννν λ€μ§ μ μλλ‘ νμ. μ²μλΆν° λ€μ 보며 νλνλ λ΄ κ²μΌλ‘ λ§λ€μ΄ 보μ! μλ§ κ·Έ λ μλ λ΄μ©λ³΄λ€λ μλ°μ€ν¬λ¦½νΈκ° μλνλ μ리, μμν κ°λ μ λ¨Όμ μ 리νλ©° 곡λΆνμ§ μμκΉ μΆλ€. λ§΅μ λν λλμ λ°λ³΅κ°λ₯ν κ°μ²΄μ΄λ―λ‘Array.forEach()λ©μλλ₯Ό μ¬μ©ν μ μλ€λ μ μ΄ μ κΈ°νμλ€. λΉμ°νfor...ofꡬ문λ μ¬μ©νλ μ½ν λ₯Ό νκ³ κ³΅λΆν λ λ§΅μ μ νλνλλ‘ ν΄μΌκ² λ€.
μ°Έκ³
λ§΅κ³Ό μ [JavaScript]Map κ°μ²΄
π 2022-08-08
Last updated
