Set 이란?
es6 에서 추가된 자료형으로
1. 배열의 중복을 제거 하고 싶을 때
2. 자료전체를 순회할 필요성이 있을 경우
3. 값의 유무를 판단 할 때
유용하게 쓸 수 있습니다.
1 번의 경우 Set의 중복된 값을 허용하지 않는다는 속성을 이용한 것이고
2,3 번의 경우 Set은 순회를 더 빨리 돈다는 점에서 유용하게 쓰입니다.
특히 저는 코딩테스트에서 중복제거를 위해 자주 사용하곤 합니다.
Set의 사용
set은 아래와 같이 생성 할 수 있으며, 생성자 안에는 iterable 한 객체들이 들어갈 수 있습니다. ex) Array
var mySet = new Set();
mySet2 = new Set([1, 2, 3, 4]);
set은 array의 push 처럼 add를 이용하여 값을 추가 할 수 있고, 중복을 허용하지 않습니다.
mySet.add(1); // Set { 1 }
mySet.add(5); // Set { 1, 5 }
mySet.add(5); // Set { 1, 5 }
set은 has 메서드를 이용하여 해당 값이 set에 포함되어 있는지의 여부를 확인할 수 있습니다.
mySet.has(1); // true
mySet.has(3); // false, 3은 set에 추가되지 않았음
mySet.has(5); // true
set의 size 메서드는 set의 크기를 반환하며, delete메서드를 이용하여 해당 요소를 제거할 수 있습니다.
mySet.size; // 5
mySet.delete(5); // set에서 5를 제거함
array를 set의 생성자 안에 넣어 set으로 변경할 수도 있지만, set을 array로 변경할 수도 있습니다.
// set을 Array로 변환하기 위해 전개 연산자 사용함.
console.log([...mySet]); // myArray와 정확히 같은 배열을 보여줌
이는 set은 iterable하기 때문에 spread연산자를 사용할 수 있어 가능합니다.
이 외로 WeakSet이라는 자료형도 존재합니다. 이는 set과 비슷하나 iterable하지 않고, 참조카운트를 증가시키기 않는 자료형입니다. iterable하지 않기때문에 안에 속성들을 순회하거나 탐색할 수 없습니다.
WeakSet은 활용도가 미미하기 때문에 따로 다루지는 않습니다.
WeakSet의 활용도가 미미하기 때문인지 혹자들은 WeakMap과 통일성을 위해 만들어졌다고도 합니다..
'프론트엔드 > javascript' 카테고리의 다른 글
[javascript] 자바스크립트 실행 컨텍스트 (0) | 2022.04.11 |
---|---|
[javascript] Map ? (0) | 2022.02.03 |
[javascript] Event.preventDefault() 란? (0) | 2022.01.12 |
[javascript] Array map, filter, reduce 사용법 (0) | 2022.01.10 |
[javascript] setTimeout 자세히알기(2) 부제: 자바스크립트 런타임 (0) | 2022.01.06 |