[js 내장 객체] Set
자바스크립트의 내장 객체인 Set은 중복을 허용하지 않는 값의 집합이다.
모든 값들이 unique하며, 삽입한 순서대로 순서가 유지된다.
배열에서 중복된 값들을 제외하고 보고 싶을 때가 많은데
그 때 Set객체가 아주 유용하다.
아래와 같이 새로운 set객체를 생성할 수 있다.
const mySet = new Set();
이렇게 만들면 빈 객체가 만들어지고, 아래와 같이 처음 생성 시 값을 넣어 만들 수도 있다.
const mySet = new Set([1, 2, 3]);
console.log(mySet); // Set(3) {1,2,3}
주요 메서드에는 아래와 같이 4가지 메서드가 있다.
1. add()
인자로 넣은 값을 객체에 추가한다.
mySet.add("fish");
mySet.add("lion");
다만, 이미 들어있는 값을 add() 할 경우 아무 변화도 없다.
그 명령은 무효화된다.
2. delete()
값을 삭제한다. 인덱스가 아닌 그 값 자체를 인자로 넣어야 한다.
mySet.delete("dog");
3. has()
객체가 인자로 들어온 값을 가지고 있는지 확인한다.
true 또는 false를 반환한다.
mySet.has("monkey"); // true
mySet.has("dog"); // false
4. forEach()
배열처럼 forEach 메서드나 for(const value of 객체) {} 반복문 문법을 사용할 수 있다.
mySet.forEach((value) => {
console.log(value);
});
for (const value of mySet) {
console.log(value);
}
메서드 외에도 set객체에는 size라는 속성이 있어 사용할 수 있다.
배열의 length처럼 요소의 수를 알려준다.
console.log(mySet.size); // 4
Set객체는 배열에서 중복을 제거할 때 가장 유용하게 사용되는 만큼
다시 배열로 돌려놓는 방법도 중요하다.
아래와 같이 배열의 from 메서드를 사용하거나, '...'로 구조분해하여 배열에 넣을 수 있다.
const myArray = Array.from(mySet);
const myArray = [...mySet];
공식 문서: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set
Set - JavaScript | MDN
Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다.
developer.mozilla.org