반응형
JavaScript에서 Set 객체는 고유한 값들의 집합을 저장할 수 있는 데이터 구조입니다. 이 글에서는 Set의 특징, 사용법, 그리고 실무에서 유용한 활용 예제까지 자세히 다룰 것입니다.
1. Set 객체란?
Set은 JavaScript에서 중복을 허용하지 않는 값들의 집합을 표현하는 데 사용됩니다. 기본 배열과는 다르게 동일한 값을 중복으로 추가할 수 없다는 점이 큰 특징입니다.
주요 특징:
- 중복 불허: 동일한 값은 한 번만 저장됩니다.
- 순서 보장: 삽입 순서를 유지합니다.
- 값의 타입 제한 없음: 문자열, 숫자, 객체 등 모든 데이터 타입 저장 가능.
const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(2); // 중복 값 추가 시 무시됨
console.log(mySet); // Output: Set { 1, 2 }
2. Set의 주요 메서드
(1) add(value)
Set에 값을 추가합니다. 이미 존재하는 값은 추가되지 않습니다.
const set = new Set();
set.add("apple");
set.add("banana");
set.add("apple"); // 중복 값 무시
console.log(set); // Output: Set { 'apple', 'banana' }
(2) delete(value)
특정 값을 삭제합니다. 값이 존재하면 삭제하고 true를 반환하며, 값이 없으면 false를 반환합니다.
set.delete("banana");
console.log(set); // Output: Set { 'apple' }
(3) has(value)
특정 값이 Set에 존재하는지 확인합니다.
console.log(set.has("apple")); // Output: true
console.log(set.has("orange")); // Output: false
(4) clear()
Set의 모든 값을 삭제합니다.
set.clear();
console.log(set); // Output: Set {}
(5) size
Set에 저장된 요소의 개수를 반환합니다.
console.log(set.size); // Output: 0
3. Set 순회 (Iteration)
Set은 반복 가능한(iterable) 객체입니다. 따라서 다양한 방법으로 순회할 수 있습니다.
(1) for...of 문
const set = new Set(["a", "b", "c"]);
for (const value of set) {
console.log(value);
}
// Output: a, b, c
(2) forEach 메서드
set.forEach((value) => {
console.log(value);
});
// Output: a, b, c
(3) Spread 문법
const arrayFromSet = [...set];
console.log(arrayFromSet); // Output: [ 'a', 'b', 'c' ]
4. Set의 실용적 활용 예제
(1) 배열의 중복 제거
const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // Output: [ 1, 2, 3, 4, 5 ]
(2) 교집합 구현
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([3, 4, 5, 6]);
const intersection = new Set([...setA].filter(x => setB.has(x)));
console.log(intersection); // Output: Set { 3, 4 }
(3) 차집합 구현
const difference = new Set([...setA].filter(x => !setB.has(x)));
console.log(difference); // Output: Set { 1, 2 }
5. Set과 WeakSet의 차이
WeakSet은 Set과 비슷하지만 몇 가지 차이점이 있습니다:
- 객체만 저장 가능: WeakSet은 원시값을 저장할 수 없습니다.
- 참조가 약함: 객체가 더 이상 참조되지 않으면 가비지 컬렉션 대상이 됩니다.
- 반복 불가: WeakSet은 Set과 달리 순회가 불가능합니다.
const weakSet = new WeakSet();
const obj = {};
weakSet.add(obj);
console.log(weakSet.has(obj)); // Output: true
결론
JavaScript의 Set 객체는 데이터의 중복을 제거하거나 집합 연산을 수행할 때 매우 유용합니다. 특히 대량의 데이터 처리나 데이터 구조를 다룰 때 큰 이점을 제공합니다. Set을 활용하여 더 효율적인 코드 작성을 도전해보세요!
'javascript' 카테고리의 다른 글
[JS] 배열을 비우는 5가지 방법 (feat. 성능 비교) (1) | 2025.01.27 |
---|---|
[JS] Spread Syntax에 대해서 알아보자 (0) | 2025.01.26 |
[JS] reduce 메서드 완벽 가이드 (0) | 2025.01.23 |
[JS] 점 표기식과 대괄호 표기식의 차이점 (0) | 2025.01.21 |
[JS] 형변환 완벽 가이드: 명시적 & 암시적 변환의 모든 것 (0) | 2025.01.21 |