Node.js/JavaScript

[js 내장 객체] Set

왈왈디 2023. 6. 16. 20:47
728x90

자바스크립트의 내장 객체인 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

728x90