
κ΄λ¦¬μ νμ΄μ§μμ λ©λ΄μ κΆνμ κ΄λ¦¬νλ κΈ°λ₯μ κ°λ° μ€, κΆνμ state λ³μμ μ΄λ€ κ΅¬μ‘°λ‘ λ΄μ κ²μΈκ° μ λν κ³ λ―Όμ νκ² λμμ΅λλ€.
λ©λ΄λͺ μ key λ‘ λκ³ μ½κΈ°, μ°κΈ° λ±μ κΆνμ λ°°μ΄μ λ΄μμ valueλ‘ λ£μΌλ©΄ λ κΉ..? κ·Έλ°λ° μ€λ³΅κ°μ΄ λ€μ΄κ°λ©΄ μ΄λ‘νμ§?
κ·Έλ κ² μμ°μ€λ½κ² κ°μ₯ λ§μ΄ μ¬μ©νλ Array μ μ‘°κΈμ λ―μ€μλ Set, κ·Έλ¦¬κ³ Map μ λν΄ κ³΅λΆνκ² λμλλλλ€... μ μ λ°μ΄ν° ꡬ쑰λ₯Ό μμ보μꡬμ ππ
μ°μ , Arrayλ JavaScriptμμ κ°μ₯ κΈ°λ³Έμ μΌλ‘ μ¬μ©λλ λ°μ΄ν° ꡬ쑰μ λλ€. μμλλ‘ μ μ₯λλ©° κ° νλͺ©μ κ³ μ ν μΈλ±μ€λ₯Ό κ°μ§λλ€. λ°°μ΄μ μΈλ±μ€λ 0λΆν° μμνλ©°, 0, 1, 2, 3, ...κ³Ό κ°μ΄ μμ°¨μ μΌλ‘ μ¦κ°ν©λλ€. λ°λΌμ μΈλ±μ€λ₯Ό ν΅ν΄ κ°μ μ κ·Όν μ μμ΅λλ€.
νΉμ key κ° μλ κ°μ μμ°¨μ μΌλ‘ λ£μ λ λ§μ΄ μ°κ³€ νλλ°μ. μμκ° μμ΄ μΈλ±μ€λ‘ μ κ·Όμ΄ κ°λ₯νλ€λ μ μ΄ μ₯μ μ΄μ§λ§ μ€λ³΅κ°μ νμ©νκΈ° λλ¬Έμ λμΌν κ°μ΄ μ¬λ¬λ² λ€μ΄κ° μ μλ€λ κ²μ΄ λ¨μ μ λλ€.
Setμ ES6λΆν° μ§μλκΈ° μμν κ³ μ ν κ°λ§μ μ μ₯ν μ μλ λ°μ΄ν° ꡬ쑰λ‘, μ€λ³΅λ κ°μ νμ©νμ§ μμ΅λλ€.
μμκ° μμ§λ§ μΈλ±μ€λ‘ μ κ·Όν μ μμΌλ©°, λμ κ° μμ²΄λ‘ κ΄λ¦¬ν μ μμ΅λλ€.
μ€λ³΅λ κ°μ νμ©νμ§ μκΈ° λλ¬Έμ μ λν¬ν κ°λ§ κ΄λ¦¬ν λ μ μ©νκ² μ¬μ©λμ§λ§ μΈλ±μ€λ‘ μ κ·Όν μ μκΈ° λλ¬Έμ μννκΈ° μν΄μλ λ°λ³΅μ(iterator) λ forλ¬Έμ νμ©ν΄μΌ ν©λλ€.
Mapλ ES6λΆν° λμ λ λ°μ΄ν° ꡬ쑰λ‘, key-value μ μμ μ μ₯νλ λ° μ¬μ©λ©λλ€. Mapμ keyμ μμλ₯Ό κΈ°μ΅νλ©° κ° key κ° κ³ μ νλ―λ‘ μ΄μ μ€λ³΅μ νμ©νμ§ μμ΅λλ€.
Objectμ λΉμ·ν΄ λ³΄μΌ μ μμ§λ§ μ€μν μ°¨μ΄μ μ΄ μμ΅λλ€. Objectλ ν€λ‘ λ¬Έμμ΄λ§ μ¬μ©ν μ μμ§λ§, Mapμ μ΄λ ν λ°μ΄ν° νμ λ ν€λ‘ μ¬μ©ν μ μμ΅λλ€.
κ·Έλ λ€λ©΄, κ° λ©μλλ μ΄λ¨κΉμ?
Array, Set κ·Έλ¦¬κ³ Map μ μ£Όμ λ©μλλ€μ λ€μκ³Ό κ°μ΅λλ€.
const myArray = [1, 2, 3];
myArray.push(4); // λ°°μ΄ λμ μμ μΆκ°
myArray.unshift(0); // λ°°μ΄ μμμ μμ μΆκ°
const mySet = new Set();
mySet.add(1); // μμ μΆκ°
mySet.add(2);
const myMap = new Map();
myMap.set('key1', 'value1'); // ν€-κ° μ μΆκ°
myMap.set('key2', 'value2');
const myArray = [1, 2, 3, 4];
myArray.pop(); // λ°°μ΄ λμ μμ μ κ±°
myArray.shift(); // λ°°μ΄ μμμ μμ μ κ±°
const mySet = new Set();
mySet.add(1);
mySet.delete(1); // μμ μ κ±°
const myMap = new Map();
myMap.set('key1', 'value1');
myMap.delete('key1'); // ν€-κ° μ μ κ±°
κ·ΈλΌ, μ€λ³΅κ°μ΄ νμ©λμ§ μλ Set μ΄ λ μ’κ² λ€? λΌκ³ μκ°νλ μ€, μλμ κΈμ λ°κ²¬νμμ΅λλ€!
JavaScript Set vs. Array performance
μ κΈμ Array μ Set μ λΉκ΅λ₯Ό κ²μν΄λ³΄μ λΆλ€μ΄λΌλ©΄ ν λ²μ©μ κΌ λ΄€μ λ²ν stack overflow μ κΈμΈλ°μ, μμ½νμλ©΄ λ€μκ³Ό κ°μ΅λλ€!
- μμλ₯Ό μΆκ°, λ³κ²½νλ ν¨μλ array κ° λΉ λ₯΄λ€.
- μμλ₯Ό μμ νλ λΆλ¬Έμμλ Set μ μλμ μΈ μΉλ¦¬.
Array μ λ©μλ μλκ° λ λΉ λ₯΄λ€λ ν₯λ―Έλ‘μ΄ μ€ν κ²°κ³Ό μλλ°μ..
λ©λ΄λͺ
μ key λ‘, κΆνμ value λ‘ λ΄λ ꡬ쑰λ Map κ³Ό κ°μ νμ
μ μ¬μ©ν¨μ λ³ν¨μ΄ μμμ§λ§ κ° κΆνμ array λ‘ λ΄μκΉ set μΌλ‘ λ΄μκΉ μ λν΄ κ³ λ―Όνμλλ°μ π€
Array μ λ©μλ μλμ΄λ, Set μ μ€λ³΅κ°μ νμ©νμ§ μλ νΉμ§μ΄λμ κ³ λ―Όνλ μ€, κ²°κ΅ Set μΌλ‘ κ²°μ νκ² λμμ΅λλ€.
μ΄λ² κΈ°νλ₯Ό ν΅ν΄ μλ‘κ² Set μ λν΄ μκ² λμ΄ λ§€μ° ν₯λ―Έλ‘μ μ΅λλ€!
μμΌλ‘λ μ€λ³΅κ°μ νμ©νμ§ μκ³ μλμ μν₯μ λΌμΉμ§ μλ μ λμ κ°μ μ μ₯ν λ, λ°μ΄ν° κ΅¬μ‘°λ‘ Set μ λ¨Όμ λ μ¬λ¦΄ μ μμ κ² κ°λ€μ! (μλ λ§νΌ 보μ΄λ λ²..!)
λ λ§μ λ°μ΄ν° ꡬ쑰λ₯Ό μμλλ©΄ λ€μν λ¬Έμ ν΄κ²° λ°©λ²μ λ μ¬λ¦΄ μ μμ κ² κ°μ μμμ΄ μμμ΅λλ€ π€
κ·ΈλΌ μ€λλ νμ½ βοΈ