6. Keyd collection
ν€ μ»¬λ μ μ μΈλ±μ€ λμ ν€λ‘ μ λ ¬λ λ°μ΄ν° 컬λ μ μΌλ‘, ν€-κ° μμΌλ‘ ꡬμ±λλ€.
μλ°μ€ν¬λ¦½νΈμλ λ§΅(Map)κ³Ό μ§ν©(Set)μ΄λΌλ λ κ°μ§ μ νμ ν€ μ»¬λ μ μ΄ μλ€.
Map
ν€, κ° μμΌλ‘ λ κ°μ²΄λ₯Ό λ΄μ μ μλ μλ£κ΅¬μ‘°μ΄λ€.
ν€λ μ λν¬νλ€(μ€λ³΅ λΆκ°λ₯). ν€κ° λ€λ₯΄λ€λ©΄ κ°μ μ€λ³΅ κ°λ₯νλ€.
κ°μ²΄μμμ ν€λ λ¬Έμμ΄μ΄μ΄μΌ νμ§λ§, Map μ μ΄λ€ νμ λ κ°λ₯νλ€.
μ΄ν°λ¬λΈ(μν κ°λ₯)
ν€-κ°μ΄ λ€μ΄κ° μμλλ‘ μμκ° λ³΄μ₯λλ€.
μλ°μ€ν¬λ¦½νΈμ μ€λΈμ νΈμ λΉμ·νλ, Map μ μ¬μ©νλ©΄ λνΌ κ°μ²΄μ μ¬λ¬κ°μ§ κΈ°λ₯μ μ¬μ©ν μ μλ€. μ¦, μ€λΈμ νΈμ λ§΅μ μΈν°νμ΄μ€κ° λ€λ₯΄λ€.
μμ±
const map = new Map([
['key1', 'k'],
['key2', 'k'],
]);
console.log(map); // Map(2) { 'key1' => 'k', 'key2' => 'k' }
obj1 = { key1: 'k' };
const map2 = new Map([[obj1]]);
console.log(map2);
μ κ·Ό
const map = new Map([
['key1', 'k'],
['key2', 'k'],
]);
console.log(map.get('key1')); // 'k;
console.log(map.get('key2')); // 'k;
// μ¬μ΄μ¦ νμΈ
console.log(map.size); // 2
// μ‘΄μ¬ νμΈ
console.log(map.has('key1')); // true
// μν
map.forEach((value, key) => console.log(key, value));
console.log(map.entries()); // [Map Entries] { [ 'key1', 'k' ], [ 'key2', 'k' ] }
console.log(map.values()); // [Map Iterator] { 'k', 'k' }
console.log(map.keys()); // [Map Iterator] { 'key1', 'key2' }
μΆκ°
const map = new Map([
['key1', 'k'],
['key2', 'k'],
]);
map.set('key3', 'k');
μμ
const map = new Map([
['key1', 'k'],
['key2', 'k'],
]);
map.delete('key3');
map.clear();
Map μμ±, λ©μλ
Set
μμκ° λ³΄μ₯λμ§ μλλ€.
κ°μ μ€λ³΅μ΄ λΆκ°λ₯νλ€.
μ΄ν°λ¬λΈ(μν κ°λ₯)
μμκ° λ³΄μ₯λμ΄μμ§ μλ€.
const set = new Set([1, 2, 3, 4, 4]);
console.log(set); // Set(4) { 1, 2, 3, 4 }
// μ¬μ΄μ¦ νμΈ
console.log(set.size); // 4
// μμ΄ν
νμΈ
console.log(set.has(2)); // true
// μμ΄ν
μΆκ°, μ΄λ―Έ μ‘΄μ¬νλ μμ΄ν
μ΄λΌλ©΄ 무μλ¨
set.add(10);
console.log(set); // Set(5) { 1, 2, 3, 4, 10 }
// μμ΄ν
μμ
set.delete(1);
console.log(set); // Set(4) { 2, 3, 4, 10 }
// μμ΄ν
μ λΆ μμ
set.delete(1);
console.log(set); // Set(0) {}
// κ°μ²΄λ set μ λ€μ΄κ° μ μλ€.
const obj1 = { name: 'test1', age: 1 };
const obj2 = { name: 'test1', age: 1 };
const obj = new Set([obj1, obj2]);
console.log(obj); // Set(2) { { name: 'test1', age: 1 }, { name: 'test1', age: 1 } }
Question
μΈν°νμ΄μ€λ?
μΈν°νμ΄μ€λ μΌλ°μ μΌλ‘ νμ 체ν¬λ₯Ό μν΄ μ¬μ©λλ©° λ³μ, ν¨μ, ν΄λμ€μ μ¬μ©λ μ μλ€. λν, μ¬λ¬κ°μ§ νμ μ κ°λ νλ‘νΌν°λ‘ μ΄λ£¨μ΄μ§ μλ‘μ΄ νμ μ μ μνλ κ²κ³Ό μ μ¬νλ€. μΈν°νμ΄μ€μ μ μΈλ νλ‘νΌν° λλ λ©μλμ ꡬνμ κ°μ νμ¬ μΌκ΄μ±μ μ μ§ν μ μλλ‘ νλ κ²μ΄λ€.
κ°μ²΄μ ν€λ λ¨μ λ¬Έμμ΄μ΄ μλ κ²½μ°μλ νμ λκ΄νΈλ₯Ό μ¬μ©ν΄μΌ νλ€ (Computed Property Name)
// [JavaScript] Computed Property Name // https://velog.io/@yujuck/object-key%EC%97%90-%EB%B3%80%EC%88%98%EB%A5%BC-%EB%84%A3%EC%9C%BC%EB%A0%A4%EB%A9%B4-Computed-Property-Name // https://ui.dev/computed-property-names
Last updated