TIL #83 | [JavaScript] Set의 개념과 사용 방법 알아보기

kibi·2024년 3월 1일
0

TIL (Today I Learned)

목록 보기
80/83

Set

순서가 없는 중복되지 않는 데이터의 집합

Set과 배열의 차이점?

배열은 데이터의 순서를 보장하여 저장하고 동일한 값을 여러 번 저장할 수 있지만 Set은 중복된 값을 저장하지 않고 순서가 보장되지 않는다.


Set 사용하기

Set 생성하기

JavsScript에서 Set은 Class이다.
new 키워드와 생성자를 사용하여 객체를 생성한다.

const set1 = new Set(); // {}
const set2 = new Set([1, 2, 3]); // {1, 2, 3]

값 추가하기

Set에는 유일한 값만 저장된다.

set1.add(1); // {1}

값 삭제하기

delete 메서드를 사용하여 특정 값을 삭제한다.
delete() 메서드에 인자로 넘기는 값이 세트에 존재한다면 true, 존재하지 않는다면 false를 반환한다.

set1.delete(1); // true
set1.delete(2); // false

값 확인하기

has() 메서드를 사용하여 값을 확인한다.

const result = set1.has(1) ? "YES" : "NO"; // YES

값 개수 확인하기

size 프로퍼티를 통해 해당 세트의 값 개수를 확인한다.

console.log(set.size) // 1

모든 값 제거하기

clear() 메서드를 사용하여 Set 객체의 모든 값을 제거한다.

set.clear();

Set에 저장된 값 순회하기

for...of 반복문을 사용하여 Set에 저장된 모든 값을 순회할 수 있다.
또한 forEach() 메서드를 사용할 수 있다.

for(const num of numSet) {
	console.log(num);
}

Set과 배열

배열을 Set으로 변환하기

배열을 Set으로 변환하면 중복 값이 모두 제거되므로 주의해야 한다.

const nums = [3, 1, 2, 3];
const set = new Set(nums) // {1, 2, 3}

Set을 배열로 변환하기

전개 연산자 또는 Array.from() 함수를 사용하여 배열로 변환한다.

const array = [...set]; // [1, 2, 3]
const array = Array.from(set); // [1, 2, 3]

배열에서 중복 값을 제거하기 위해 Set 사용하기

const nums = [3, 1, 2, 3];
const newNums = [... new Set(nums)];
console.log(newNums); // [1, 2, 3]

집합 연산

여러 개의 Set 사이의 합집합, 교집합, 차집합을 구할 수 있다.

// 합집합
const union = new Set([...set1, ...set2]);
console.log([...union]); // [1, 2, 3, 4, 5, 6, 7, 8]

// 교집합
const intersection = new Set([...set1].filter((value) => set2.has(value)));
console.log([...intersection]); // [4, 5]

// 차집합
const difference = new Set([...set1].filter((value) => !set2.has(value)));
console.log([...difference]); // [1, 2, 3]

참고
MDN Set
자바스크립트 세트(Set) 완벽 가이드

0개의 댓글