Set()
Set 은 클래스(class)이므로 new 키워드와 생성자를 사용하여 객체를 생성할 수 있습니다.
만약 인수를 전달하지 않으면 빈 Set 객체가 생성됩니다.
const set = new Set(); // {} const set2 = new Set('apple'); // {"a","p","l","e"}
값 추가 - add()
const set = new Set(); set.add(1); // {1} //연쇄적 호출 set.add(1).add(2).add('apple'); // {1,2,"apple"}
값 삭제 - delete() / clear()
삭제하였다면 true를 반환, 삭제에 실패하였다면 false를 반환한다.
set.delete(1); //{2,"apple"}
clear()
일괄 삭제 할 시 undefined 반환한다.
set.clear(); // {}
값 존재 여부 확인 - has()
if (set.has(1)) { console.log("1은 존재한다."); } // "1은 존재한다."
값 개수 확인 - set.size
const set = new Set(); set.add(1).add(2).add('apple'); console.log(set.size); // 3
세트 순회 - forEach() / for()
const set = new Set(); set.add(1).add(2).add('apple'); set.forEach((x) => console.log(x)); for (const x of set) { console.log(x); } // 1 // 2 // "apple"
배열을 세트로 변경
만약 배열에 중복 값이 있다면 세트로 변경 시 중복 값은 사라진다.
const engSet = new Set(['a', 'b', 'c']); // {"a","b","c"} // 중복 값 제거 const numSet = new Set([1, 1, 5, 6, 7, 4, 5]); // {1,5,6,7,4}
집합
집합할 배열
const oneSet = new Set([1,3,4,5,7]); const twoSet = new Set([2,3,4,5,6]);
합집합
두 set 을 합쳐 새로운 set 을 리턴 한다.
const union = new Set([...oneSet, ...twoSet]); console.log(union) // {1,3,4,5,7,2,6} console.log('union Array',[...union]) // [1,3,4,5,7,2,6]
교집합
배열로 변환해주고 filter를 통해 set.has()를 사용해 교집합을 구한다.
const intersection = new Set([...oneSet].filter((x) => twoSet.has(x))) console.log(intersection) // {3,4,5} console.log('intersection Array', [...intersection]) // [3,4,5]
차집합
!set.has()를 사용해 존재하지 요소만 새로운 set 으로 리턴 한다.
const differenceOne = new Set([...oneSet].filter((x) => !twoSet.has(x))) console.log(differenceOne) // {1,7} console.log('differenceOne Array', [...differenceOne]) // [1,7] const differenceTwo = new Set([...twoSet].filter((x) => !oneSet.has(x))) console.log(differenceTwo) // {2,6} console.log('differenceOne Array', [...differenceTwo]) // [2,6]
참고