Map?
- 키와 값의 쌍으로 이루어진 컬렉션(객체와 유사)
- 이터러블(반복 할 수 있는 객체)의 일종
- 이터러블의 기능(for...of 문, spread 연산자, destructuring) 사용 가능
- 객체나 배열 등의 참조 값을 키로 사용 가능
- 키와 값을 자주 변경해야하는 경우 적합하도록 만들어짐
Map 사용 방법
const map1 = new Map();
map1.set('name', 'kim');
map1.set('age', 20);
map1.set('address', 'Seoul');
console.log(map1);
const map2 = new Map([
['name', 'kim'],
['age', 20],
['address', 'Seoul'],
]);
console.log(map2);
map2.set('name', 'lee');
console.log (
map2.has('name'),
map2.has('age')
);
console.log(
map2.get('name'),
map2.get('age'),
map2.get('address'),
map2.get('phone')
);
const objKey = { x: 1, y: 2 };
const arrKey = [1, 2, 3];
map2.set(objKey, 'OBJ_KEY');
map2.set(arrKey, 'ARR_KEY');
console.log(
map2.delete('address'),
map2.delete(objKey),
map2.delete({x: 3, y: 4})
);
console.log(map2);
const map3 = map2
.set('min', 'name')
.set(23, 'age')
.set('Busan', 'address');
console.log(map2, map3);
console.log(
map3.size
);
console.log(
map2.keys(),
map2.values(),
map2.entries()
);
map2.clear();
console.log(map2, map3);
Set?
- 배열과 다르게 동일한 값을 여러번 포함할 수 없음
- 이미 존재하는 값을 추가시 변화가 없음
- 값들의 순서가 무관해짐
- 알고리즘, 중복제거에 많이 사용됨
Set 사용방법
const set1 = new Set();
set1.add('banana');
set1.add('melon');
set1.add('strawberry');
console.log(set1);
set1.add('banana');
set1.add('melon');
console.log(set1)
const set2 = new Set(['bananan','melon','stawberry','banana']);
console.log(set2);
console.log(
set2.has('bananan'),
set2.has('melon'),
set2.has('watermelon')
);
console.log(
set2.delete('banana'),
set2.delete('watermelon')
);
console.log(set2);
const set3 = set2.add(2);
console.log(set3);
console.log(
set2.size
);
console.log(
set2.keys(),
set2.values(),
set2.entries()
);
set2.clear();
console.log(set2, set3);
const obj1 = new Set()
.add({ x: 1, y: 2 })
.add({ x: 1, y: 2 })
.add([1, 2, 3])
.add([1, 2, 3]);
console.log(objSet1);
const obj = { x: 1, y: 2 };
const arr = [1, 2, 3];
const obj2 = new Set()
.add(obj)
.add(obj)
.add(arr)
.add(arr);
console.log(objSet2)
iterable로서 Map & Set
- for...of 문 사용 가능
- spread 연산자 사용 가능
- destructuring 사용 가능
const map1 = new Map([['a',1],['b',2],['c',3],['d',4],['e',5]]);
for([key, value] of map1) {
console.log(key, value)
}
const arr = [...map1];
console.log(arr);
const [x, y] = map1;
console.log(x);
console.log(y);
const [a, b, ...c] = map1;
console.log(a);
console.log(b);
console.log(c);
const set1 = new Set(['a','b','c','d','e']);
for(item of set1) {
console.log(item);
const arr = [...set1];
console.log(arr);
const arr1 = [1, 1, 1, 2, 2, 3, 4, 5];
const arr2 = [...new Set(arr1)];
console.log(arr2);
const [x, y] = set1;
console.log(x);
console.log(y);
const [a, b, ...c] = set1;
console.log(a);
console.log(b);
console.log(c);