Set
은 중복을 허용하지 않는 컬렉션이다.
// Set 생성
let tmp = new Set();
// 값 추가
tmp.add('a');
tmp.add('a');
tmp.add('b');
'a' 라는 값을 중복으로 추가해도 {'a', 'a', 'b'}가 아닌 {'a', 'b'}가 담긴다. 중복된 값은 배제하기 때문이다.
// 값 제거
tmp.delete('a');
// 값 존재 확인
tmp.has('b');
has
의 경우, Set 내에 값이 존재하면 true, 없으면 false를 반환한다.
// Set 비우기
tmp.clear();
// Set 개수
tmp.size;
clear
는 기존에 있는 Set의 값들을 모두 제거한다.
size
는 Set에 몇 개의 값이 있는지 숫자로 나타낸다.
배열 메서드인 find()
는 배열 내의 요소들을 모두 확인해 중복을 찾아내기 때문에, 성능 면에서 Set
에 비해 낮다. 따라서 Set
을 이용한 배열의 중복을 확인해보자.
let arr = ['a', 'a', 'b', 'c']; // 기존 배열
let mySet = new Set(arr); // Set 생성
mySet.has('b'); // true
let arr2 = [...mySet]; // ['a', 'b', 'c']
arr
이라는 기존의 배열을 Set 자료형으로 변환해 mySet
이라는 변수로 만들었다. 이를 통해 중복을 제거하고, 'b'라는 값이 있는지 확인한다.
따라서 arr2
배열은 기존의 arr
배열에서 중복을 제거하여 유일성을 갖는 배열이다.
cf)
https://ko.javascript.info/map-set
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set
https://velog.io/@reasonz/2022.05.13-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-Map-Set-%EC%9E%90%EB%A3%8C%ED%98%95