[JS] 자바스크립트 컬렉션(JavaScript Collection) - Set

2022. 3. 5. 02:00Front-end/JavaScript

Set이란?

자바스크립트의 키 기반 컬렉션(Keyed Collection)으로 ES6(ECMAScript 6)부터 소개되었다.

값(value)만을 저장하며 중복을 허용하지 않는 객체로 유일한 값을 저장할 수 있다.

요소 순서에 의미가 없고 인덱스로 요소에 접근할 수 없는 특징을 가지고 있다. 


대표 속성(property) 및 메서드(method)

  • 생성자 : new Set()
  • 개수 확인 : Set.size
  • 요소 추가 : Set.add(value)
  • 요소 삭제 : Set.delete(value)
  • 전체 삭제 : Set.clear()
  • 요소 존재 여부 확인 : Set.has(key)
  • 그 외 메서드 : Set.keys(), Set.values(), Set.entires()

 

요소 추가/삭제

다양한 자료형을 value로 사용 가능하며 set.add 호출 시 set이 반환되므로 체이닝(chaining)이 가능하다.

let set = new Set();
let num = new Set([1, 2, 3, 4, 5]);
let str = new Set("hello");

console.log(set); // Set(0) {}
console.log(num); // Set(5) { 1, 2, 3, 4, 5 }
console.log(str); // Set(4) { 'h', 'e', 'l', 'o' }

set.add(1).add(1).add(2).add(3);
console.log(set); // Set(3) { 1, 2, 3 }

console.log(set.has(3)); // true
console.log(set.has(4)); // false

set.delete(1);
set.delete(10);
console.log(set); // Set(2) { 2, 3 }

 

Set 반복문

Collection 객체인 Set이 가지고 있는 iterator 속성을 이용하여 for-of 구문을 통한 반복문 수행이 가능하다.

let str = new Set("hello");

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

for (const iterator of str.keys()) {
  console.log(iterator); // h   e   l   o
}

for (const iterator of str.values()) {
  console.log(iterator); // h   e   l   o
}

for (const iterator of str.entries()) {
  console.log(iterator);
}
// [ 'h', 'h' ]
// [ 'e', 'e' ]
// [ 'l', 'l' ]
// [ 'o', 'o' ]

Set에는 Set.keys(), Set.values() 메서드가 의미 없으므로 생략한다.

반응형