JavaScript - 고유한 값을 저장하는 집합 Set

반응형

자바스크립트에 Set 문법이 있습니다.

자바스크립트에서 값을 저장할 때, 배열이나 객체를 많이 사용하는데

ES6 이후 부터 Set이 추가되었습니다.

 

기존 배열과 차이점이 뭔지 Set에 대해서 알아보도록 하겠습니다.

 

Set 이란?

고유한 값을 저장하는 집합입니다.

값의 중복을 허용하지 않고 Index가 없다는 점이 배열과의 차이점입니다.

Set 사용법

const mySet = new Set();
const mySet2 = new Set([1, 2, 3, 4, 5]);

 

데이터 추가 / 삭제 / 값 존재 여부

const mySet = new Set();

// 값 추가
mySet.add(1);
mySet.add(2);
mySet.add(3);

mySet.add(1); // nope

// 값 제거
mySet.delete(2);

// Set 크기 확인
const size = mySet.size;

// 값 존재 여부 확인
cosnst hasValue = mySet.has(3);

// Set의 값들 순회
mySet.forEach(value => {
  console.log(value);
});

 

Set 언제 사용하면 좋을까?

배열에 중복된 값을 허용하지 않을 때

배열에서 중복값을 제외할 수 있습니다.

그 이후 전개 연산자나, Array.from 함수를 이용해서 배열로 변경할 수 있습니다.

const set = new Set(['superman', 'batman', 'pororo', 'superman']);
// Set(3) {'superman', 'batman', 'pororo'}

const array = [...set];
const array2 = Array.from(set);

 

 

집합 연산 기능이 필요할 때

고유한 값을 저장하고 있기 때문에, 합집합, 교집합, 차집합 연산을 쉽게 할 수 있습니다.

const set1 = new Set([1, 2, 3]);
const set2 = new Set([2, 3, 4]);

const union = new Set([...set1, ...set2]); // 합집합
const intersection = new Set([...set1].filter(value => set2.has(value))); // 교집합
const difference = new Set([...set1].filter(value => !set2.has(value))); // 차집합

 

그 외에도 중복된 값을 허용하지 않기 때문에 값을 찾거나 반복문을 사용할 때, Array 보다 성능이 좋을 수 도 있습니다.

728x90
반응형