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
반응형
'언어 > JavaScript' 카테고리의 다른 글
[Blob] 브라우저에서 파일 데이터를 다루는 핵심 도구 (0) | 2025.04.25 |
---|---|
[filter()] 조건에 맞는 요소를 필터링하기 (0) | 2025.04.23 |
[Map] 객체보다 더 똑똑한 자료구조 (0) | 2025.04.22 |
[Object] 자바스크립트의 객체 (0) | 2025.04.19 |
[Hash] 해시 기반 자료구조 (0) | 2025.04.18 |