Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있다.
Set 객체의 배열과의 차이점
- 인덱스를 사용하지 않는다.
- 동일한 값을 중복하여 포함할 수 없다.
- 요소 순서에 의미가 없다.
빠른 검색 속도를 갖고 있으며, 인덱스가 따로 존재하지 않기 때문에 iterator를 사용한다.
const set = new Set()
console.log(set); // Set(0) {}
set.add(1);
console.log(set); // Set(1) {1}
set.add(2).add(3);
console.log(set); // Set(3) {1,2,3}
console.log(set); // Set(3) {1,2,3}
console.log(set.size); //3
console.log(set); // Set(3) {1,2,3}
console.log(set.has(3)); // true
console.log(set.has(4)); // false
console.log(set); // Set(3) {1,2,3}
set.delete(2)
console.log(set); // Set(2) {1,3}
console.log(set); // Set(3) {1,2,3}
set.clear();
console.log(set); // Set(0) {}
set 객체는 이터러블이다. 다라서 for ..of 문으로 순회할 수 있으며, 스프레드 문법과 배열 디스트럭처링 할당의 대상이 될 수도 있다.
const set = new Set([1,2,3])
console.log(set); // Set(0) {}
for (const value of set){
console.log(value) // 1 2 3
}
// 스프레드 문법
console.log( [...set]); // [1,2,3]
// 디스트럭처링 할당의 대상
const [a, ...rest ] = set;
console.log( a , rest); // 1 , [2,3]
let Arr = [1,2,3,4,5,1,4,2]
//set자료형으로 변환
Arr = new Set(Arr);
//다시 배열로 변환
Arr = Array.from(Arr);
console.log(Arr) // [1,2,3,4,5]