ES6에서 Map, Set 추가적인 자료구조가 등장했다.
Map과 Set의 목적은 기존의 객체 또는 배열보다 데이터의 구성, 검색, 사용을 효율적으로 처리하기 위함이다.
Set은 키를 저장하지 않고 값만 저장한다. 또한 값이 중복되지 않는 유일한 요소로만 구성된다.
const mySet = new Set();
mySet.add("value1");
mySet.add("value2");
mySet.add("value3");
mySet.add("value5");
mySet.add("value8");
console.log(mySet.size);
console.log(mySet.has("value1"));
코드결과)
5
true
const mySet = new Set(["value1", "value2", "value3", "value5", "value8"]);
for (const value of mySet.values()) {
console.log(value);
}
코드결과)
value1
value2
value3
value5
value8
const mySet = new Set(["value1", "value2", "value3", "value5", "value8"]);
mySet.delete("value5");
console.log(mySet);
코드결과)
Set(4) { 'value1', 'value2', 'value3', 'value8' }
const mySet1 = new Set([1, 2, 3, 4]);
const mySet2 = new Set([2, 4, 6, 8]);
// 교집합
const intersection = new Set([...mySet1].filter((x) => mySet2.has(x)));
console.log(intersection);
코드결과)
Set(2) { 2, 4 }
const mySet1 = new Set([1, 2, 3, 4]);
const mySet2 = new Set([2, 4, 6, 8]);
//차집합
const difference = new Set([...mySet1].filter((x) => !mySet2.has(x)));
console.log(difference);
코드결과)
Set(2) { 1, 3 }
const mySet1 = new Set([1, 2, 3, 4]);
const mySet2 = new Set([2, 4, 6, 8]);
//합집합
function union(setA, setB) {
const newSet = new Set(setA);
for (const item of setB) {
newSet.add(item);
}
return newSet;
}
console.log(union(mySet1, mySet2));
코드결과)
Set(6) { 1, 2, 3, 4, 6, 8 }