본문 바로가기

자바스크립트 리뷰

new Set() 기본개념과 교집합 구하는 메소드 만들기 [JS문법 종합반 2주차 - 3]

Set은 수학적 집합의 개념을 표현할 수 있는 문법이다.

Set은 고유한 값을 저장하는 자료 구조이다. Set은 값만 저장하며, 키를 저장하지 않는다. Set은 값이 중복되지 않는 유일한 요소로만 구성된다. 같은 값을 두 번 넣는다면 저장되지 않는다. Set을 사용하면 다음과 같은 작업을 수행할 수 있다.

  • 값 추가 및 값 존재여부 확인
  • 값 삭제
  • 모든 값 제거
  • Set 크기확인

위의 모든 기능들을 정리했고, 교집합 구하는 메소드를 정리해 보았다. 자바스크립트 내장 메소드인 filter()를 사용한다.

// Set 두개를 정의한다.
const setA = new Set([1, 2, 3, 4, 5]);
const setB = new Set([2, 4]);

// setA와 setB의 교집합을 구해 보자.
const a = [...setA].filter((v) => setB.has(v))
console.log(a)

// 교집합을 구하는 프로토타입 메소드를 만들어 보자. 메소드 명칭은 intersection.
Set.prototype.intersection = function(set) {
    return new Set([...this].filter(x => set.has(x)));
} 

// setA와 setB의 교집합
console.log(setA.intersection(setB)); // Set(2) {2, 4}
// setB와 setA의 교집합
console.log(setB.intersection(setA)); // Set(2) {2, 4}

//값 추가
setA.add('d'); 
console.log(setA);

//값 존재여부 확인
console.log(setA.has('d')); 

// 값 제거
setA.delete('d')
console.log(setA);

// 모든 값 제거
setA.clear()
console.log(setA);

// Set 크기확인
console.log(setA.size);