λ§μ΄ μ°λ νμ€ λΉνΈμΈ κ°μ²΄λ€μ΄κ΅°μ!
μ λ§ μ μ©νκΈ° μ’μ μΉκ΅¬λ€μ΄μμ π₯°
Set
μ μΌν κ°λ€μ μ§ν©μ κ°μΌλ‘ κ°μ§λλ€.
μ΄λ μλ μνμμ μ¬μ©λλ 'μ§ν©'μ κ°λ
μμ μ°©μλ κ°μ²΄μμ!
λ§μΉ, νλνλμ κ°λ€μ μ§ν© μμλΌκ³ μΉλ©΄, μ΄λ¬ν μμλ€μ΄ μ€λ³΅ν΄μ λ€μ΄μμ§ μλλ‘ νκΈ° μν¨μ΄μ£ .
μ΄λ, κ°μ²΄μ νΉμ±μ μ§~νκ² κ°κ³ μλλ°μ.
λ°λΌμ λ°°μ΄μ²λΌ λΉμ·ν΄λ³΄μ¬λ, μμ μμλ₯Ό λ°λ‘ μ μ₯νμ§ μμμ.
const set = new Set();
// νμ€ λΉνΈμΈ 'κ°μ²΄'μΈ `Set`μ΄ μ΄λ―Έ μ μμ μ μλμ΄ μμ£ !
console.log(set.constructor.name) // 'Set'
console.log(set) // Set(0) {}
Set
μ μμ±μ μ΄ν°λ¬λΈμ μΈμλ‘ μ λ¬λ°λλ€.μ΄κ² μ€μν©λλ€.
Set
μ μ무λ λ°μ§ μμμ. μ€μ§ μ΄ν°λ¬λΈν μΉκ΅¬λ§ μΈμλ‘ μ λ¬ λ°μ΅λλ€.
Set
μ μ΄ν°λ¬λΈμ λ°ννλ€.μ΄ν°λ¬λΈν μΉκ΅¬λ€μ μ€νλ λ λ¬Έλ²κ³Ό λμ€νΈλμ²λ§ ν λΉμ΄ κ°λ₯ν΄μ.
μ΄λ₯Ό ν΅ν΄ κ·Έλ₯ μ μΌν κ°μ λ°°μ΄λ‘ λ°μμ¬ μ μμ΄μ.
μ€μ λ‘ μκ³ λ¦¬μ¦μ΄λΌλμ§, ꡬνμ μμ΄μ 맀~μ° μ μ©νλ΅λλ€! π₯°
console.log(new Set([1,2,3,4,1,2,3,4])) // [1,2,3,4]
size
νλ‘νΌν°λ₯Ό ν΅ν΄ κΈΈμ΄λ₯Ό μ μ μμ΄μ!
console.log(new Set([1,2,3,4,1,2,3,4]).size) // 4
μ΄λ add
, has
, remove
λ₯Ό ν΅ν΄ κ°λ₯ν©λλ€.
const set = new Set();
// μΆκ°
test = set.add(1) // add λ©μλλ μΆκ°λ μΈμ€ν΄μ€μ κ²°κ³Όκ°μ λ°νν©λλ€.
console.log(test) // Set(1) {1}
// κ²μ
set.has(1) // true;
// μμ
const isDeleted = set.remove(1) // μ€ν ν κ²°κ³Ό μνλ₯Ό booleanμΌλ‘ λ°νν©λλ€.
console.log(isDeleted) // true
μ΄ν°λ¬λΈμ΄λ, for ... of ...
κ° κ°λ₯νλ©°, νμ€λ€ λ§μΆ° forEach
λ©μλ μμ ꡬνλμ΄ μγ
λΈλλ€.
const set = new Set([1,2,3,4,1,2,3,4]);
// λ€μμ λμΌνκ² 1 2 3 4λ₯Ό λ°νν©λλ€.
set.forEach(v => console.log(v))
for (let i of set) {console.log(i)}
Map
μλ°μ€ν¬λ¦½νΈμ κ°μ²΄λ κ°μ²΄μ νλ‘νΌν° ν€κ° μμκ° λ³΄μ₯λμ§ μλλ€λ νκ³κ° μμ΄μ.
ES6
μ νμ€μΌλ‘ μ μνμμ΅λλ€.μ΄μ λν μμΈμ μΆμ ν΄λ³΄λ©΄, μ΄λ μλ°μ€ν¬λ¦½νΈμ λ°°μ΄μ ꡬννκΈ° μν λ΄λΆ λ‘μ§μμ κΈ°μΈνκ² λλ κ²μΌλ‘ μΆμΈ‘ν μ μμ΅λλ€! π‘
const obj = { 10: 1, test: 4, hi: 2, 1: 3 };
console.log(obj) // {1: 3, 10: 1, test: 4, hi: 2}
λν μλ°μ€ν¬λ¦½νΈμμλ μ μ νλ‘νΌν°, νΉμ λ¬Έμμ΄λ§ νλ‘νΌν° ν€λ‘ μ€ μ μμ΄μ.
μ΄λ¬ν νκ³λ₯Ό
Map
κ°μ²΄λ μ²λ¦¬ν΄μ€ μ μμ΄μ.
μ΄λ, μ΄ν°λ μ΄μ νλ‘ν μ½μ μ€μν¨μ μμ΄μ μΈλ±μ€ μμλ₯Ό 보μ₯ν΄μ€μΌ νλλ°,Map
μ΄ μ΄ν°λ¬λΈμ΄κΈ° λλ¬Έμ λλ€.
λνMap
μ λ€λ₯Έ νμ μ κ°λ νλ‘νΌν° ν€λ‘ μ λ¬μ΄ κ°λ₯ν΄μ.
const map = new Map();
map.set(10, 1)
map.set('test', 4)
map.set('hi', 2)
map.set(1, 3)
console.log(map)
// Map(4) {10 => 1, 'test' => 4, 'hi' => 2, 1 => 3}
Map
κ°μ²΄ μμ μ΄ν°λ¬λΈμ΄λ©°, λ°λΌμ μμλ°λ μΈμ€ν΄μ€ μμ μ΄ν°λ¬λΈμ
λλ€.
μ΄λ, μ΄ μ¬λ³Ό μ΄ν°λ μ΄ν°μ name
μ entries
μ
λλ€.
const map = new Map();
map.set(10, 1)
map.set('test', 4)
map.set('hi', 2)
map.set(1, 3)
console.log([...map]) // [[10, 1], ['test', 4], ['hi', 2], [1, 3]]
// μ΄λ¬λΈμ κΈ°λ³Έμ μΌλ‘ μ¬λ³Ό μ΄ν°λ μ΄ν°λ₯Ό κ°κ³ μκ³ , μ΄λ entries λ©μλμμ νμΈν μ μμ΅λλ€.
console.log(map[Symbol.iterator].name); // 'entries'
// λ°νλ μ΄ν°λ μ΄ν° κ°μ²΄λ₯Ό ν΅ν΄ λ°°μ΄μ λ΄μλΌ μ μμ΅λλ€.
console.log([...map.entries()]) // [[10, 1], ['test', 4], ['hi', 2], [1, 3]]
λ°λΌμ for ... of
μ forEach
λ©μλλ‘ μνκ° κ°λ₯ν©λλ€.
λ€λ§ μ°¨μ΄μ μ΄λΌλ©΄ forEach
λ κ°, ν€
λ‘ κ°μ Έμ¬ μ μλ€λ μ μ
λλ€.
map.forEach((v, key) => console.log(key, v))
// 10 1
// test 4
// hi 2
// 1 3
for (let i of map) { console.log(i) }
// [10, 1]
// ['test', 4]
// ['hi', 2]
// [1, 3]
Set
κ³Ό λ§μ°¬κ°μ§λ‘ set
get(has)
delete
λ©μλλ₯Ό ν΅ν΄ μΆκ°, κ²μ, μμ κ° κ°λ₯ν©λλ€.
const map = new Map();
map.set('key', 'value'); // keyμ valueλ₯Ό μΈμλ‘ μ λ¬νμ¬ μΈμ€ν΄μ€μ ν€μ κ°μ κ°λ νλ‘νΌν°λ₯Ό μμ±ν©λλ€.
// map.getμ μμ ν κ°μ μ»κΈ° μν μ©λλ‘ μ¬μ©νλ©°,
// ν€μ ν΄λΉνλ κ°μ΄ μλ€λ©΄ `undefined`μ
λλ€.
map.get('key') // 'value'
// λ°λ©΄ `has`λ κ°μ `boolean`μΌλ‘ λ°ννλ―λ‘, μλμ§ μ¬λΆλ₯Ό νμν λ μ 리ν©λλ€.
map.has('key') // true
// μμ λ κ²°κ³Ό μ¬λΆλ₯Ό booleanμΌλ‘ λ°νν©λλ€.
const deleteResult = map.delete('key')
console.log(deleteResult) // true;
Map
κ³Ό Object
μ μ°μ° μλμ΄λ»κ² 보면 νΈκΈ°μ¬μ΄ μλ λΆλΆμ΄ μ΄κ²μΌ κ² κ°κΈ°λ ν΄μ.
λ§μ½ Map
μ΄ Object
λ³΄λ€ μ±λ₯μ΄ μ’λ€λ©΄? μ΄λμκ° Object
κ° λ κ±°μκ° λ μ μκΈ° λλ¬Έμ΄μ£ .
μ€μ λ‘ λμ μ±λ₯μμμ λ―Έλ¬ν μ°¨μ΄κ° λ°μν©λλ€.
Chrome V8
μ κΈ°μ€μΌλ‘ νκ² μ΅λλ€.)Object
λ³΄λ€ Map
μ΄ μλμ μΌλ‘ μ 리ν©λλ€.Object
κ° μ’ λ μ 리ν©λλ€.Object
κ° μ 리ν©λλ€.Map
μ΄ μ 리ν©λλ€.Map
μ΄ ν¨μ¬ λ λ§μ΄ μ‘μλ¨Ήλλ€.μ¦ V8
κΈ°μ€μΌλ‘ μ 리νμλ©΄ λ€μκ³Ό κ°λ€μ!
Map
μ κ³ λ €νλ€.Object
λ₯Ό κ³ λ €νλ€.μΆκ°λ‘, Map
μ JSON
μ μ§μνμ§ μμμ. π
λ°λΌμ λκ° λ°μ΄ν°λ₯Ό API
λ₯Ό ν΅ν΄ μ£Όκ³ λ°μ λμλ, μ¬μ©μ λ€μ κ²ν ν΄λ³΄μλ κ²μ μΆμ²ν©λλ€!
μ¬μ€ μ΄κ² λ€μμ.
κ²°κ΅ λΉνΈμΈ κ°μ²΄λΌλ 건 μ©λ²λ§ νμ
νλ©΄ λμ΄κΈ΄ νλ°, λκ° μμ¬μμ μ€ν μ€λ²νλ‘μ°λ₯Ό λ μ°Ύμλ³΄κ² λλ€μ.
κ·Έλλ μ°μ° μλλ₯Ό λ κΉκ² μ΄ν΄ν μ μμ΄μ κΈ°λΆ μ’μ 곡λΆμμ΅λλ€.
κ·ΈλΌ, λ€λ€ μ¦κ±°μ΄ 곡λΆνμκΈ°λ₯Ό λ°λΌλ©°. μ΄μ! π