Set ( 집합 중복값을 가지지 않음 )

ES
비고
배열로 변환하려면 배열의 from 메소드를 통해 변환 가능 const array = Array.from(집합객체);
Tags
 

기본 사용법 (생성, 추가, 삭제)

const set1 = new Set([1, 2, 3, 4, 5]); set1.add(1); // Set { 1, 2, 3, 4, 5 } // 이미 1이 있으므로 추가안됨 console.log(set1.has(1)); // expected output: true console.log(set1.has(6)); // expected output: false set1.delete(5); // Set { 1, 2, 3, 4 } // set에서 5를 제거함
 

집합 → 배열로 변환

Array.from(arrayLike object);

배열, 오브젝트 등 reference를 사용하는 경우는?

[1,2,3] === [1,2,3] // false { a:1, b:1 } === { a:1, b:1 } // false
레퍼런스를 보고 판단하므로 당연히 다르다고 판단하게 된다.
따라서 내부 값이 같은 경우를 필터링 하고 싶다면 별도로 작업을 해줘야 한다.
 

문자열로 변환 후 문자열 비교로 검사하기

필터링 하는 방법은 여러가지가 있겠지만 이런 식으로 별도의 검사 과정을 해줘야함.
const s = new Set(); arr.forEach(obj => ( !s.has(JSON.stringify(obj)) && s.add(JSON.stringify(obj)) )) s = new Set([...s].map(o => JSON.parse(o)))