Set객체는 중복값을 허용하지 않는 배열과 유사한 구조다.
let set = new Set();
let john = { name: "John" };
let pete = { name: "Pete" };
let mary = { name: "Mary" };
set.add(john);
set.add(pete);
set.add(mary);
set.add(john);
set.add(mary);
for (let user of set) {
alert(user.name); // John, Pete, Mary 순으로 출력
}
중복으로 add해도 추가되지 않는다.
원소를 추가한 순서로 출력되지만 내부적으로 검색에 최적화되어있어 배열의 find보다 검색속도가 빠르다.
set객체는 완전한 배열이 아니다.
let s1 = new Set(["oranges", "apples", "bananas", "apples"]);
for (const value of s1){
console.log(value );
}
중복된 원소가 있는 이터러블객체를 인자로 사용하면 중복원소가 제거된 이터러블객체를 반환한다.
(배열을 반환하지 않는다)
Set객체도 WeakSet객체가 중요하다.