μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- useRef
- μκ³ λ¦¬μ¦
- fetch API
- position
- CSS
- λ°λΈμ½μ€
- useEffect
- Gatsby
- history api
- λ°λΈμ½μ€3κΈ°
- Props
- Flex
- νλ‘κ·Έλλ¨Έμ€
- μ½λ©ν μ€νΈ
- μλ°μ€ν¬λ¦½νΈ
- νλ‘ νΈμλ
- REACT
- λΈλ‘κ·Έ
- float
- Today
- Total
Daehyunii's Dev-blog
37μ₯ Setκ³Ό Map λ³Έλ¬Έ
37μ₯ Setκ³Ό Map
Daehyunii 2022. 7. 28. 13:2237.1 Set
Set κ°μ²΄λ μ€λ³΅λμ§ μλ μ μΌν κ°λ€μ μ§ν©μ΄λ€. Set κ°μ²΄λ λ°°μ΄κ³Ό μ μ¬νμ§λ§ λ€μκ³Ό μ°¨μ΄κ° μλ€.
κ΅¬λΆ | λ°°μ΄ | Set κ°μ²΄ |
λμΌν κ°μ μ€λ³΅νμ¬ ν¬ν¨ν μ μλ€. | o | x |
μμ μμμ μλ―Έκ° μλ€. | o | x |
μΈλ±μ€λ‘ μμμ μ κ·Όν μ μλ€. | o | x |
μ΄λ¬ν Set κ°μ²΄μ νΉμ±μ μνμ μ§ν©μ νΉμ±κ³Ό μΌμΉνλ€. Setμ μνμ μ§ν©μ ꡬννκΈ° μν μλ£κ΅¬μ‘°λ€. λ°λΌμ Setμ ν΅ν΄ κ΅μ§ν©, ν©μ§ν©, μ°¨μ§ν©, μ¬μ§ν© λ±μ ꡬνν μ μλ€.
37.1.1 Set κ°μ²΄μ μμ±
Set κ°μ²΄λ Set μμ±μ ν¨μλ‘ μμ±νλ€. Set μμ±μ ν¨μμ μΈμλ₯Ό μ λ¬νμ§ μμΌλ©΄ λΉ Set κ°μ²΄κ° μμ±λλ€.
const set = new Set();
console.log(set); // Set(0) {}
Set μμ±μ ν¨μλ μ΄ν°λ¬λΈμ μΈμλ‘ μ λ¬λ°μ Set κ°μ²΄λ₯Ό μμ±νλ€. μ΄λ μ΄ν°λ¬λΈμ μ€λ³΅λ κ°μ Set κ°μ²΄μ μμλ‘ μ μ λμ§ μλλ€.
const set1 = new Set([1,2,3,3]);
console.log(set1); // Set(3) {1, 2, 3}
const set2 = new Set('hello');
console.log(set2); // Set(4) {'h', 'e', 'l', 'o'}
37.1.2 μμ κ°μ νμΈ
Set κ°μ²΄μ μμ κ°μλ₯Ό νμΈν λλ Set.prototype.size νλ‘νΌν°λ₯Ό μ¬μ©νλ€. size νλ‘νΌν°λ setter ν¨μ μμ΄ getter ν¨μλ§ μ‘΄μ¬νλ μ κ·Όμ νλ‘νΌν°λ€. λ°λΌμ size νλ‘νΌν°μ μ«μλ₯Ό ν λΉνμ¬ Set κ°μ²΄μ μμ κ°μλ₯Ό λ³κ²½ν μλ μλ€.
const { size } = new Set([1,2,3,3]);
console.log(size); // 3
37.1.3 μμ μΆκ°
Set κ°μ²΄μ μμλ₯Ό μΆκ°ν λλ Set.prototype.add λ©μλλ₯Ό μ¬μ©νλ€. add λ©μλλ μλ‘μ΄ μμκ° μΆκ°λ Set κ°μ²΄λ₯Ό λ°ννλ€. λ°λΌμ add λ©μλλ₯Ό νΈμΆν νμ add λ©μλμ μ°μμ μΌλ‘ νΈμΆν μ μλ€. Set κ°μ²΄μ μ€λ³΅λ μμμ μΆκ°λ νμ©λμ§ μλλ€. μ΄λ μλ¬κ° λ°μνμ§λ μκ³ λ¬΄μλλ€.
const set = new Set();
console.log(set); // Set(0) {size: 0}
set.add(1).add(2).add(2);
console.log(set); // Set(2) {1, 2}
Set κ°μ²΄λ κ°μ²΄λ λ°°μ΄κ³Ό κ°μ΄ μλ°μ€ν¬λ¦½νΈμ λͺ¨λ κ°μ μμλ‘ μ μ₯ν μ μλ€.
37.1.4 μμ μ‘΄μ¬ μ¬λΆ νμΈ
Set κ°μ²΄μ νΉμ μμκ° μ‘΄μ¬νλμ§ νμΈνλ €λ©΄ Set.prototype.has λ©μλλ₯Ό μ¬μ©νλ€. has λ©μλλ νΉμ μμμ μ‘΄μ¬ μ¬λΆλ₯Ό λνλ΄λ λΆλ¦¬μΈ κ°μ λ°ννλ€.
const set = new Set([1,2,3]);
console.log(set.has(2)); // true
console.log(set.has(4)); // false
37.1.5 μμ μμ
Set κ°μ²΄μ νΉμ μμλ₯Ό μμ νλ €λ©΄ Set.prototype.delete λ©μλλ₯Ό μ¬μ©νλ€. delete λ©μλλ μμ μ±κ³΅ μ¬λΆλ₯Ό λνλ΄λ λΆλ¦¬μΈ κ°μ λ°ννλ€.
const set = new Set([1,2,3]);
set.delete(2);
console.log(set); // Set(2) {1, 3}
37.1.6 μμ μΌκ΄ μμ
Set κ°μ²΄μ λͺ¨λ μμλ₯Ό μΌκ΄ μμ νλ €λ©΄ Set.prototype.clear λ©μλλ₯Ό μ¬μ©νλ€. clear λ©μλλ μΈμ λ undefinedλ₯Ό λ°ννλ€.
const set = new Set([1,2,3]);
set.clear();
console.log(set); // Set(0) {}
37.1.7 μμ μν
Set κ°μ²΄μ μμλ₯Ό μννλ €λ©΄ Set.prototype.forEasch λ©μλλ₯Ό μ¬μ©νλ€. λν Set κ°μ²΄λ μ΄ν°λ¬λΈμ΄λ€. λ°λΌμ for...of λ¬ΈμΌλ‘ μνν μ μμΌλ©°, μ€νλ λ λ¬Έλ²κ³Ό λ°°μ΄ λμ€νΈλμ²λ§μ λμμ΄ λ μλ μλ€.
const set = new Set([1,2,3]);
set.forEach((v, v2, set) => console.log(v, v2, set));
/*
1 1 Set(3) {1, 2, 3}
2 2 Set(3) {1, 2, 3}
3 3 Set(3) {1, 2, 3}
*/
37.2 Map
Map κ°μ²΄λ ν€μ κ°μ μμΌλ‘ μ΄λ£¨μ΄μ§ 컬λ μ μ΄λ€. Map κ°μ²΄λ κ°μ²΄μ μ μ¬νμ§λ§ μ°¨μ΄κ° μλ€.
κ΅¬λΆ | κ°μ²΄ | Map κ°μ²΄ |
ν€λ‘ μ¬μ©ν μ μλ κ° | λ¬Έμμ΄ λλ μ¬λ² κ° | κ°μ²΄λ₯Ό ν¬ν¨ν λͺ¨λ κ° |
μ΄ν°λ¬λΈ | x | o |
μμ κ°μ νμΈ | Object.keys(obj).length | map.size |
37.2.1 Map κ°μ²΄μ μμ±
Map κ°μ²΄λ Map μμ±μ ν¨μλ‘ μμ±νλ€. Map μμ±μ ν¨μμ μΈμλ₯Ό μ λ¬νμ§ μμΌλ©΄ λΉ Map κ°μ²΄κ° μμ±λλ€.
const map = new Map();
console.log(map); // Map(0) {size: 0}
Map μμ±μ ν¨μλ μ΄ν°λ¬λΈμ μΈμλ‘ μ λ¬λ°μ Map κ°μ²΄λ₯Ό μμ±νλ€. μ΄λ μΈμλ‘ μ λ¬λλ μ΄ν°λ¬λΈμ ν€μ κ°μ μμΌλ‘ μ΄λ£¨μ΄μ§ μμλ‘ κ΅¬μ±λμ΄μΌ νλ€.
const map1 = new Map([['key1','value1'],['key2','value2']]);
console.log(map1); // Map(2) {'key1' => 'value1', 'key2' => 'value2'}
const map2 = new Map([1,2]); // TypeError λ°μ
37.2.2 μμ κ°μ νμΈ
Map κ°μ²΄μ μμ κ°μλ₯Ό νμΈν λλ Map.prototype.sizeνλ‘νΌν°λ₯Ό μ¬μ©νλ€.
const { size } = new Map([['key1','value1'],['key2,','value2']])
console.log(size); // 2
37.7.3 μμ μΆκ°
Map κ°μ²΄μ μμλ₯Ό μΆκ°ν λλ Map.prototype.set λ©μλλ₯Ό μ¬μ©νλ€.
const map = new Map();
console.log(map); // Map(0) {size: 0}
map.set('key1','value1');
console.log(map); // Map(1) {'key1' => 'value1'}
set λ©μλλ μλ‘μ΄ μμκ° μΆκ°λ Map κ°μ²΄λ₯Ό λ°ννλ€. λ°λΌμ set λ©μλλ₯Ό νΈμΆν νμ set λ©μλλ₯Ό μ°μμ μΌλ‘ νΈμΆν μ μλ€.
const map = new Map();
console.log(map); // Map(0) {size: 0}
map
.set('key1','value1')
.set('key2','value2');
console.log(map); // Map(2) {'key1' => 'value1', 'key2' => 'value2'}
37.2.4 μμ μ·¨λ
Map κ°μ²΄μμ νΉμ μμλ₯Ό μ·¨λνλ €λ©΄ Map.prototype.get λ©μλλ₯Ό μ¬μ©νλ€. get λ©μλμ μΈμλ‘ ν€λ₯Ό μ λ¬νλ©΄ Map κ°μ²΄μμ μΈμλ‘ μ λ¬ν ν€λ₯Ό κ°λ κ°μ λ°ννλ€.
const map = new Map();
const lee = { name : 'lee'};
const kim = { name : 'kim'};
map
.set(lee, 'developer')
.set(kim, 'designer');
console.log(map.get(lee)); // developer
console.log(map.get('key')); // undefined
37.2.5 μμ μ‘΄μ¬ μ¬λΆ νμΈ
Map κ°μ²΄μ νΉμ μμκ° μ‘΄μ¬νλμ§ νμΈνλ €λ©΄ Map.prototype.has λ©μλλ₯Ό μ¬μ©νλ€. has λ©μλλ νΉμ μμμ μ‘΄μ¬ μ¬λΆλ₯Ό λνλ΄λ λΆλ¦¬μΈ κ°μ λ°ννλ€.
const map = new Map();
const lee = { name : 'lee'};
const kim = { name : 'kim'};
map
.set(lee, 'developer')
.set(kim, 'designer');
console.log(map.has(lee)); // true
console.log(map.has('key')); // false
37.2.6 μμ μμ
Map κ°μ²΄μ μμλ₯Ό μμ νλ €λ©΄ Map.prototype.delet λ©μλλ₯Ό μ¬μ©νλ€. delete λ©μλλ μμ μ±κ³΅ μ¬λΆλ₯Ό λνλ΄λ λΆλ¦¬μΈ κ°μ λ°ννλ€.
const map = new Map();
const lee = { name : 'lee'};
const kim = { name : 'kim'};
map
.set(lee, 'developer')
.set(kim, 'designer');
map.delete(kim);
console.log(map); // Map(1) {{name : 'lee'} => 'developer'}
37.2.7 μμ μΌκ΄ μμ
Map κ°μ²΄μ μμλ₯Ό μΌκ΄ μμ νλ €λ©΄ Map.prototype.clear λ©μλλ₯Ό μ¬μ©νλ€. clear λ©μλλ μΈμ λ undefinedλ₯Ό λ°ννλ€.
const map = new Map();
const lee = { name : 'lee'};
const kim = { name : 'kim'};
map
.set(lee, 'developer')
.set(kim, 'designer');
map.clear();
console.log(map); // Map(0) {size: 0}
37.2.8 μμ μν
Map κ°μ²΄μ μμλ₯Ό μννλ €λ©΄ Map.prototype.forEach λ©μλλ₯Ό μ¬μ©νλ€. λν Map κ°μ²΄λ μ΄ν°λ¬λΈμ΄λ―λ‘ for...of λ¬ΈμΌλ‘ μνν μ μμΌλ©°, μ€νλ λ λ¬Έλ²κ³Ό λ°°μ΄ λμ€νΈλμ²λ§ ν λΉμ λμμ΄ λ μλ μλ€.
const map = new Map();
const lee = { name : 'lee'};
const kim = { name : 'kim'};
map
.set(lee, 'developer')
.set(kim, 'designer');
map.forEach((v,k,map) => console.log(v,k,map));
/*
developer {name: 'lee'} Map(2)
{{name : 'lee'} => 'developer',
{name : 'kim'} => 'designer'}
designer {name: 'kim'} Map(2)
{{name : 'lee'} => 'developer',
{name : 'kim'} => 'designer'}
*/
'π Language & CS knowledge > JavaScript (λͺ¨λμλ°μ€ν¬λ¦½νΈ Deep Dive)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
39μ₯ DOM(λ Έλλ€λ‘ ꡬμ±λ νΈλ¦¬ μλ£κ΅¬μ‘°) (0) | 2022.07.28 |
---|---|
38μ₯ λΈλΌμ°μ μ λ λλ§ κ³Όμ (0) | 2022.07.28 |
36μ₯ λμ€νΈλμ²λ§ ν λΉ (0) | 2022.07.28 |
35μ₯ μ€νλ λ λ¬Έλ² (0) | 2022.07.28 |
34μ₯ μ΄ν°λ¬λΈ (0) | 2022.07.27 |