언어/JavaScript

[Set] 중복 없는 데이터 관리하기

Dachaes 2025. 4. 22. 17:11
728x90
반응형
728x90

Set 

자바스크립트에서 배열은 가장 널리 쓰이는 컬렉션 타입이지만, 중복된 값을 제거하거나 고유한 데이터만 관리하고 싶을 때는 Set이 훨씬 간단한 도구입니다.

 


1.  Set 객체란?

Set은 값들의 집합(collection) 을 저장하는 자료구조입니다. 가장 큰 특징은 중복된 값을 허용하지 않는다는 점입니다. 즉, 동일한 값이 여러 번 추가되어도 하나만 저장됩니다.

const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(2); // 중복된 값, 무시됨
console.log(mySet); // Set { 1, 2 }
  • 또한, Set에 저장되는 값의 순서는 삽입 순서(insert order) 를 따릅니다.

 


2.  주요 메서드 및 속성

a.  add(value)

Set에 새로운 값을 추가합니다. 이미 존재하는 값이면 무시됩니다.

const set = new Set();
set.add('apple');
set.add('banana');
set.add('apple'); // 중복, 추가되지 않음

b.  has(value)

해당 값이 Set에 존재하는지 여부를 boolean으로 반환합니다.

set.has('apple'); // true
set.has('orange'); // false

c.  delete(value)

Set에서 특정 값을 제거합니다. 제거에 성공하면 true, 존재하지 않으면 false를 반환합니다.

set.delete('banana'); // true
set.delete('grape');  // false

d.  clear()

Set의 모든 요소를 제거합니다.

set.clear();
console.log(set.size); // 0

e.  size

Set에 저장된 요소의 개수를 나타냅니다.

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

f.  Set 반복(iteration)

Set은 반복 가능한 객체(iterable)입니다. for...of, forEach, values, keys, entries 등을 사용할 수 있습니다.

const fruits = new Set(['apple', 'banana', 'cherry']);

for (let fruit of fruits) {
  console.log(fruit);
}

fruits.forEach((value) => {
  console.log(`과일: ${value}`);
});
  • Set의 keys()와 values()는 같은 결과를 반환합니다. (Set은 키가 따로 없고 값만 존재하기 때문)

 


3.  배열(Array)과 Set 비교

항목 Array Set
중복 허용 가능 ❌ 중복 불가
요소 검색 includes(), indexOf() 등 has() 메서드 사용
크기 확인 length 속성 size 속성 사용
고유한 값만 저장 수동 필터링 필요 자동 처리됨
성능 많은 요소가 있을 경우 느릴 수 있음 Set은 has와 add 연산이 더 빠름

 


4.  예제 - 배열에서 중복 제거하기

가장 흔한 Set의 활용 예는 배열의 중복을 제거하는 것입니다.

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

 


5.  Set을 활용한 고급 팁

a.  교집합 (intersection)

const a = new Set([1, 2, 3]);
const b = new Set([2, 3, 4]);

const intersection = new Set([...a].filter(x => b.has(x)));
console.log(intersection); // Set { 2, 3 }

b.  합집합 (union)

const union = new Set([...a, ...b]);
console.log(union); // Set { 1, 2, 3, 4 }

c.  차집합 (difference)

const difference = new Set([...a].filter(x => !b.has(x)));
console.log(difference); // Set { 1 }

 


6.  마무리

  • Set은 중복 없는 고유한 값의 집합을 관리할 때 사용합니다.
  • 주요 메서드: add, has, delete, clear, size, 반복 메서드
  • Set을 활용하면 배열 중복 제거, 집합 연산 등을 간단히 처리할 수 있습니다.
  • Array보다 데이터의 고유성 보장과 검색 성능이 뛰어난 경우에 적합합니다.

함께 보면 좋은 자료

외부 사이트 :

블로그 글 :

 

[Hash] 해시 기반 자료구조

Hash 자바스크립트로 알고리즘 문제를 풀다 보면 Object, Map, Set과 같은 해시 기반 자료구조를 자주 만나게 됩니다. 이들은 모두 내부적으로 해시 테이블(Hash Table) 구조를 기반으로 하며, 빠른 탐색,

dachaes-devlogs.tistory.com

 


반응형

 

728x90
반응형