ES6에 등장한 자료구조인 Map 과 Set 객체에 대해 알아보자.
Map
Map 객체는 Key-Value 쌍과 Key의 원래 삽입 순서를 기억합니다.
모든 값(객체 및 원시 값 모두)은 Key 또는 Value으로 사용될 수 있습니다.
객체와 유사하지만, Map은 Key에 다양한 자료형을 허용합니다.
즉, Key를 문자형으로 변환하지 않습니다.
객체를 Key로 사용하는 예시
1 2 3 4 5 6 7 8
let john = { name: "John" }; let map = new Map(); map.set(john, 123); console.log(map.get(john)); // 123 console.log(typeof john); // object
Method & Property
new Map()
Map 생성자
map.set(key, value)
key를 이용해 value를 저장합니다.
반환값은 자기 자신(map 객체)
map.get(key)
key에 해당하는 값을 반환합니다.
key가 존재하지 않으면 undefined를 반환합니다.
map.has(key)
key가 존재하면 true, 존재하지 않으면 false를 반환합니다.
map.delete(key)
key에 해당하는 값을 삭제합니다.
반환값은 성공 시 true, 실패 시 false
map.clear()
모든 요소를 제거합니다. 반환값은 undefined.
map.size
요소의 개수를 반환합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const map1 = new Map();
map1.set("bar", "foo");
console.log(map1.get("bar")); // foo
console.log(map1.has("bar")); // true
console.log(map1.delete("bar")); // true
console.log(map1.size); // 2
map1.clear();
console.log(map1.size); // 0
Set
Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다.
즉, 중복을 허용하지 않는 값을 모아놓은 특별한 컬렉션입니다.
Set은 배열처럼 키가 없는 값이 저장됩니다.
Method & Property
new Set(iterable)
Set 생성자입니다.
iterable
객체를 전달받아 그 안의 값을 복사해 Set에 넣어줍니다.set.add(value)
값을 추가합니다.
반환값은 Set 자신
set.has(value)
값이 존재하는지 확인합니다.
반환값은 성공 시 true, 실패 시 false
set.delete(value)
값을 제거합니다.
반환값은 성공 시 true, 실패 시 false
set.clear()
모든 요소를 제거합니다.
반환값은 undefined.
set.size
요소의 개수를 반환합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const set = new Set([1, 2, 3]);
console.log(set.has(1)); // true
console.log(set.size); // 3
set.add(4);
console.log(set.size); // 4
set.delete(4);
console.log(set.size); // 3
set.clear();
console.log(set.size); // 0