
자바스크립트에서는 Set과 Map 이라는 컬렉션 객체를 제공한다. 이 두 객체는 일반 객체와는 다른 유용한 기능들을 제공하므로 이번 포스팅에서 정리하고 넘어가보자.
중복되지 않는 유일한 값들의 집합(set)
size 프로퍼티로 Set의 크기를 확인할 수 있다.const set = new Set();
console.log(set); // Set(0) {}
// 중복을 허용하지 않는 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'}
size 프로퍼티를 사용한다.const set = new Set([1, 2, 3, 4, 4]);
console.log(set); // Set(4) {1, 2, 3, 4}
set.size = 10; // 무시된다.
console.log(set.size); // 4
size 프로퍼티는 setter 함수 없이 getter 함수만 존재하는 접근자 프로퍼티다.add(value) : Set 객체에 요소를 추가한다. (이미 존재하는 값이라면 무시됨)has(value) : Set 객체에 특정 요소가 존재하는지 확인하여 존재 여부를 나타내는 불리언 값을 반환한다.delete(value) : Set 객체의 특정 요소를 삭제하고 성공 여부를 나타내는 불리언 값을 반환한다.clear() : Set 객체의 모든 요소를 일괄 삭제한다. 언제나 undefined를 반환한다.const set = new Set([1, 2, 3, 4, 4]);
console.log(set); // Set(4) {1, 2, 3, 4}
set.add(5);
console.log(set.has(3)); // true
set.delete(1);
console.log(set); // Set(4) {2, 3, 4, 5}
const set = new Set([1, 2, 3]);
// v2 자리에 key(index)가 와야하는데 set은 key가 없으므로 value를 다시 전달.
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}
*/
for...of문으로 순회할 수 있다.const set = new Set([1, 2, 3]);
for (const value of set) {
console.log(value); // 1, 2, 3
}
console.log([...set]); // [1, 2, 3]
키와 값의 쌍으로 이루어진 컬렉션
size 프로퍼티로 Map의 크기를 확인할 수 있다.const map = new Map();
console.log(map); // Map(0) {}
const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]);
console.log(map1); // Map(2) { "key1" => "value1", "key2" => "value2"}
const map2 = new Map([['key1', 'value1'], ['key1', 'value2']]);
console.log(map2); // Map(1) { "key1" => "value2" }
size 프로퍼티를 통해 Map 객체의 요소 개수를 확인할 수 있다.const map = new Map([['key1', 'value1'], ['key2', 'value2']]);
map.size = 10; // 무시된다.
console.log(map.size); // 2
set(key, value) : key에 value를 설정한다.get(key) : key에 해당하는 값을 반환한다. key가 없으면 undefined를 반환한다.has(key) : 특정 키의 존재 여부를 확인하여 불리언 값을 반환한다.delete(key) : 특정 키를 삭제하고 성공 여부를 나타내는 불리언 값을 반환한다.clear() : 모든 키-값 쌍을 제거한다.const map = new Map();
map.set('name', 'Sean');
map.set('age', 25);
map.set(true, 'boolean key');
console.log(map.get('name')); // Sean
console.log(map.size); // 3
map.forEach((value, key) => {
console.log(`${key}: ${value}`);
});
// name: Sean
// age: 25
// true: boolean key
forEach와 for...of문을 사용하여 요소를 순회한다.keys(), values(), entries() 메서드를 사용하여 요소키를 값으로 갖는 이터레이터를 반환할 수 있다.