Set 객체는 유일한 값을 저장하는 값 콜렉션이다. Set 객체는 중복 값을 허용하지 않는다. Set 객체 내의 값은 한 번만 나타날 수 있기 때문에, Set 콜렉션 내에서 유일하다.
Set 객체는 다음과 같이 생성한다.
const newSet = new Set([1, 2, 2, 4, 3, 10, 5]);
Set 객체는 배열의 형태를 갖는 객체이다. Set는 배열과 비슷해 보이지만 배열은 아니다.
const newSet = new Set([1, 2, 2, 4, 3, 10, 5]);
Array.isArray([]); // true
Array.isArray(newSet); // false
Set 객체는 삽입한 요소의 순서대로 순회할 수 있다. Set 객체에는 중복 값을 넣더라도 내부적으로 중복 데이터를 제거하기 때문에 모든 값이 유일하다.
const newSet = new Set([1, 2, 2, 4, 3, 10, 5]);
newSet.forEach(el => console.log(el));
// 출력
// 1
// 2 (2가 중복되지만 중복 값은 제거되었음)
// 4
// 3
// 10
// 5
add() 메서드로 Set에 값을 추가할 수 있다.
const newSet = new Set([1, 2, 2, 4, 3, 10, 5]);
newSet.add(22);
console.log(newSet);
// 출력
/*
Set(7) {
1,
2,
4,
3,
10,
5,
22,
__proto__: {...}
}
*/
delete() 메서드로 Set에서 값을 삭제할 수 있다. 삭제 성공 여부를 boolean 값으로 반환한다.
const newSet = new Set([1, 2, 2, 4, 3, 10, 5]);
newSet.delete(2); // true
newSet.delete(7); // false
has() 메서드로 Set에서 값을 조회할 수 있다. 조회 성공 여부를 boolean 값으로 반환한다.
const newSet = new Set([1, 2, 2, 4, 3, 10, 5]);
newSet.has(2); // true
newSet.has(7); // false
size 프로퍼티로 Set의 크기를 가져올 수 있다.
const newSet = new Set([1, 2, 2, 4, 3, 10, 5]);
newSet.size; // 6
clear() 메서드로 Set를 리셋할 수 있다.
const newSet = new Set([1, 2, 2, 4, 3, 10, 5]);
newSet.clear();
console.log(newSet);
// 출력
/*
Set(0) {
__proto__: {...}
}
*/
Set를 Array로 변환하기 위해 스프레드 연산자를 사용할 수 있다.
const newSet = new Set([5, 3, 2, 4, 1]);
const arrFromSet = [...newSet];
console.log(arrFromSet);
// 출력
// [ 5, 3, 2, 4, 1 ]
또는 Array.from() 메서드를 사용할 수도 있다.
const newSet = new Set([5, 3, 2, 4, 1]);
const arrFromSet = Array.from(newSet);
console.log(arrFromSet);
// 출력
// [ 5, 3, 2, 4, 1 ]