[javascript] Set객체

프로그래머스 1단계 폰켓몬 문제 풀 때 Set객체를 사용했는데...
Set객체가 중복을 제거해준다는 것은 알고 있었지만 딱 거기까지만 알았을 뿐 그 이상은 몰라서 찾아봄


Set객체란?

Set 객체는 중복되지 않는! 유일한!! 값들의 집합이다.

배열과 유사하지만 Set객체는 배열과는 다르게 중복되지 않은 값들로 이루어져 있다.


[ Set 객체의 생성 ]

  • Set 생성자 함수 이용
  • 인수로는 이터러블 객체를 넣어주며, 인수를 전달하지 않으면 빈 Set객체가 생성됨
const set = new Set();
console.log(set); // Set(0) {size: 0}


const set1 = new Set([1, 2, 3, 4]);
console.log(set1); // Set(4) {1, 2, 3, 4}


const set2 = new Set("banana");
console.log(set2); // Set(3) {'b', 'a', 'n'} 
// 이렇게 중복되는 a와 n은 여러 개가 저장되지 않고 한 개만 저장된다.


[ Set을 통한 배열의 중복 요소 제거 ]

const uniq = array => [...new Set(array)]; 
// 배열의 중복 요소를 제거할 uniq 함수 만들어줌

console.log(uniq([0, 7, 0, 3, 1, 7, 6])); // [0, 7, 3, 1, 6]
// uniq 함수의 매개변수로 배열 전달 -> 중복된 요소가 제거되어 나옴

uniq함수 설명

  • Set 객체 생성시, 인수로 중복 요소를 제거할 배열(array) 전달
  • Spread 연산자를 사용하여 생성된 Set 객체의 요소들을 하나씩 꺼내준 뒤,
    새로운 배열의 요소로 넣어줌
    [... Set(5) {0, 7, 3, 1, 6}] → [0, 7, 3, 1, 6] 으로 짠! 하고 변환됨!!


[ Set객체 요소의 개수 ]

  • Set객체.size를 사용
  • size를 이용하여 Set객체의 크기 변경 불가능
const set = new Set('apple');
console.log(set.size); // 4

// set.size = 10; (x) 잘못된 방법! 변경 불가능!


[ 요소 추가/ 삭제 ]

  • 요소 추가
    : Set객체.add(추가할 요소)

  • 요소 삭제
    : Set객체.delete(삭제할 요소)
    → delete 메서드는 삭제 성공시 true, 실패시 false 반환함

  • 요소 일괄 삭제
    : Set객체.clear()
// Set객체 생성
const set = new Set();


// 요소 추가
set.add(1);
console.log(set) // Set(1) {1}

set.add(2).add(3).add(2);
console.log(set) // Set(3) {1, 2, 3}
// 이미 있는 요소를 또 추가하면 추가되지 않음


// 요소 삭제
set.delete(2);
console.log(set); // Set(2) {1, 3}


// 요소 일괄 삭제
set.clear()
console.log(set); // Set(0) {size: 0}


[ 요소의 존재 여부 ]

  • Set객체.has(확인할 요소)
const set1 = new Set('banana');
const set2 = new Set([1, 3, 7]);

console.log(set1.has('a')); // true
console.log(set2.has(5)); // false


[ 요소 순회 ]

  • 여러 방법이 있지만 간단하게 for ... of 문 사용
const hello = new Set('hello');

for (const value of hello) {
  console.log(value); // h e l o
}

좋은 웹페이지 즐겨찾기