본문으로 바로가기

[Javascript] Set 정리 및 예제

category 1. 웹개발/1_1_1 JavaScript 2022. 5. 5. 15:43

Set은 흔히 집합이라고도 합니다. Set(집합)의 개념은 간단합니다. 유한하고 구분되는 객체들의 그룹입니다. 즉, 유일한(중복되지 않는) 항목들의 그룹입니다. 집합은 O(1) 상수 시간에 유일한 항목을 확인하고 추가할 수 있기 때문에 굉장히 중요합니다. 집합이 상수 시간 연산이 가능한 이유는 집합의 구현이 해시 테이블의 구현을 기초로 하기 때문입니다.

 

 

다음과 같이 자바스크립트에서는 Set이 기본으로 지원됩니다. 기본 Set 객체에는 속성이 하나만 존재하는 데 size라는 정수 속성입니다. 해당 속성은 집합 내 항목들의 현재 개수를 나타냅니다.

const exampleSet = new Set();

 

 

[삽입]

Set의 주요 특징은 유일함을 확인한다는 것입니다. Set은 항목들을 추가할 수 있지만 중복되는 항목은 허용되지 않습니다. 아래의 코드는 Set에는 중복 항목들을 추가할 수 없다는 것을 확인할 수 있습니다.

const exampleSet = new Set();
exampleSet.add(1); // exampleSet: Set {1}
exampleSet.add(1); // exampleSet: Set {1}
exampleSet.add(2); // exampleSet: Set {1, 2}

 

 

[삭제]

Set은 집합으로부터 항목들을 삭제할 수도 있습니다. Set.delete는 boolean을 반환합니다. (해당 항목이 존재해서 삭제됐다면 true, 해당 항목이 존재하지 않으면 fasle)

const examplSet = new Set();
exampleSet.add(1); // exampleSet: Set {1}
exampleSet.delete(1); // true
exampleSet.delete(5); // false
exampleSet.add(2); // exampleSet: Set {2}

 

 

[포함]

Set.has는 해당 항목이 집합 내에 존재하는지 확인합니다. 확인하는 데 걸리는 시간은 O(1)밖에 되지 않습니다.

const exampleSet = new Set();
exampleSet.add(1); // exampleSet: Set {1}
exampleSet.has(1); // true
exampleSet.has(2); // false
exampleSet.add(2); // exampleSet: Set {1, 2}
exampleSet.has(2); // true

 

 

[예제]

1. Set을 사용해 배열의 중복 항목 확인하는 예제입니다.

배열을 집합(Set)으로 변환함으로써 집합의 크기를 배열의 길이와 비교해 중복이 있는지 쉽게 확인할 수 있습니다.

function checkDuplicate(arr) {
    const mySet = new Set(arr);
    return mySet.size < arr.length;
}

checkDuplicate([1,2,3,4,5]); // false
checkDuplicate([1,1,2,3,4,5]); // true

 

 

2. 개별적인 배열들로부터 유일한 값만을 반환하는 예제입니다.

두 배열을 합친 다음 해당 두 배열을 집합(Set)으로 변환함으로써 유일한 항목들만을 저장합니다. 그러고 나서 해당 집합을 다시 배열로 변환하면 결과적으로 유일한 항목들만을 지닌 배열이 생성됩니다.

function uniqueList(arr1, arr2) {
    const mySet = new Set(arr1.concat(arr2));
    return Array.from(mySet);
}

 

 

 

References

https://ko.wikipedia.org/wiki/%EC%A7%91%ED%95%A9

자바스크립트로하는 자료구조와 알고리즘(배세민)