이번 2024 6월에 ES2024 새로운 버전이 발표가 되면서 mdn에 Set()과 관련된 새로운 메서드가 추가가 되었다.
주로 우리는 알고리즘 문제를 해결할때 직접 합집합, 교집합 등을 구했는데 새로운 메서드가 추가가 되면서 더욱 편리하게 사용이 가능하게 되었다.
다만, mdn에 따르면 Node.js 버전이 22.0.0 이상부터 지원이 가능하므로 이 점을 주의해야 한다.
집합 객체를 받아 이 집합에는 있지만 주어진 집합에는 없는 요소를 포함하는 새로운 집합을 반환한다.
한마디로 A, B 집합이 있다면 A-B 집합 즉, 차집합을 반환한다.
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.difference(squares)); // Set(3) { 3, 5, 7 }
집합 객체를 받아 이 집합과 주어진 집합의 공통 요소를 포함하는 새 집합을 반환한다.
이 인스턴스 메서드는 A, B 집합이 주어진다면 A와 B의 교집합을 반환한다.
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.intersection(squares)); // Set(2) { 1, 9 }
집합 객체를 받아 이 집합이 주어진 집합과 공통 요소가 없는지 여부를 나타내는 불리언을 반환한다.
만약 공통 요소가 없다면 true, 그렇지 않다면 false를 반환한다.
A, B 집합이 존재한다면 서로소 집합인지 판별하는 메서드이다.
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const squares = new Set([1, 4, 9, 16]);
console.log(primes.isDisjointFrom(squares)); // true
const composites = new Set([4, 6, 8, 9, 10, 12, 14, 15, 16, 18]);
const squares = new Set([1, 4, 9, 16]);
console.log(composites.isDisjointFrom(squares)); // false
집합 객체를 받아 이 집합의 모든 요소가 주어진 집합에 있는지 여부를 나타내는 불리언을 반환한다.
부분집합인지 아닌지를 반환하는 메서드로 모든 요소가 주어진 집합에 있다면 true, 그렇지 않다면 false 를 반환한다.
const fours = new Set([4, 8, 12, 16]);
const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]);
console.log(fours.isSubsetOf(evens)); // true
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const odds = new Set([3, 5, 7, 9, 11, 13, 15, 17, 19]);
console.log(primes.isSubsetOf(odds)); // false
const set1 = new Set([1, 2, 3]);
const set2 = new Set([1, 2, 3]);
console.log(set1.isSubsetOf(set2)); // true
console.log(set2.isSubsetOf(set1)); // true
하나의 Set을 받아서 주어진 Set의 모든 요소가 이 Set에 속하는지 여부를 나타내는 불리언을 반환한다.
수학적으로는 상위 집합인지 아닌지를 판단하고 만약 모든 요소가 Set안에 있다면 true 를 그렇지 않다면 false 를 반환한다.
const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]);
const fours = new Set([4, 8, 12, 16]);
console.log(evens.isSupersetOf(fours)); // true
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const odds = new Set([3, 5, 7, 9, 11, 13, 15, 17, 19]);
console.log(odds.isSupersetOf(primes)); // false
하나의 Set을 받아 이 Set과 주어진 Set 중 하나에는 있지만 둘 다에는 없는 요소를 포함하는 Set을 반환한다.
수학적으로는 A, B 집합이 있다면 A-B 와 B-A의 합한 것을 의미한다.
즉, A와 B의 합집합에서 교집합을 제외한 원소들을 반환한다.
const evens = new Set([2, 4, 6, 8]);
const squares = new Set([1, 4, 9]);
console.log(evens.symmetricDifference(squares)); // Set(5) { 2, 6, 8, 1, 9 }
집합을 받아 이 집합과 주어진 집합 중 하나 또는 둘 다에 있는 요소를 포함하는 새 집합을 반환한다.
즉, A와 B 의 합집합을 반환한다.
const evens = new Set([2, 4, 6, 8]);
const squares = new Set([1, 4, 9]);
console.log(evens.union(squares)); // Set(6) { 2, 4, 6, 8, 1, 9 }