새롭게 나온 Set() 객체의 메서드

세니·2024년 10월 29일
0

New ES2024

이번 2024 6월에 ES2024 새로운 버전이 발표가 되면서 mdn에 Set()과 관련된 새로운 메서드가 추가가 되었다.

주로 우리는 알고리즘 문제를 해결할때 직접 합집합, 교집합 등을 구했는데 새로운 메서드가 추가가 되면서 더욱 편리하게 사용이 가능하게 되었다.

다만, mdn에 따르면 Node.js 버전이 22.0.0 이상부터 지원이 가능하므로 이 점을 주의해야 한다.

Set.prototype.difference()

집합 객체를 받아 이 집합에는 있지만 주어진 집합에는 없는 요소를 포함하는 새로운 집합을 반환한다.

한마디로 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 }

Set.prototype.intersection()

집합 객체를 받아 이 집합과 주어진 집합의 공통 요소를 포함하는 새 집합을 반환한다.

이 인스턴스 메서드는 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 }

Set.prototype.isDisjointFrom()

집합 객체를 받아 이 집합이 주어진 집합과 공통 요소가 없는지 여부를 나타내는 불리언을 반환한다.

만약 공통 요소가 없다면 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

Set.prototype.isSubsetOf()

집합 객체를 받아 이 집합의 모든 요소가 주어진 집합에 있는지 여부를 나타내는 불리언을 반환한다.

부분집합인지 아닌지를 반환하는 메서드로 모든 요소가 주어진 집합에 있다면 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.prototype.isSupersetOf()

하나의 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.prototype.symmetricDifference()

하나의 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 }

Set.prototype.union()

집합을 받아 이 집합과 주어진 집합 중 하나 또는 둘 다에 있는 요소를 포함하는 새 집합을 반환한다.

즉, 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 }
profile
세니는 무엇을 하고 있을까

0개의 댓글