37장: Set과 Map

Set

  • 중복되지 않는 유일한값 들의 집합

  • 교집합, 합집합, 차집함, 여집합 등을 구현할 수 있다.

  • add 메서드를 연속적 체이닝 가능

  • 배열과 차이

    • 요소순서에 의미가 없다

    • 인덱스로 접근 불가

기본

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

const set2 = new Set('hello');
console.log(set2); // Set(4) {"h", "e", "l", "o"}

// 값 추가 할당 
const set = new Set();
set.add(1).add(2);
console.log(set);

// 타입 상관 없이 넣기 가능 
set
  .add(1)
  .add('a')
  .add(true)
  .add(undefined)
  .add(null)
  .add({})
  .add([]);


// 값 확인 
console.log(set.has(1)); // true
set.delete('a');
// 존재하지 않는 요소 0을 삭제하면 에러없이 무시된다.
set.delete(0);

// 비우기 
set.clear();

순회 방법

  • 1, 2번째 인수가 동일한데도 사용하는 이유?

    • Array.Prototype.forEach 메서드와 인터페이스를 통일하기위함이며 다른의미는 없다.

  • Set 객체는 이터러블이다

    • for...of문으로 순회할수있으며, 스프레드문법과 배열디스트럭처링의 대상이 될 수 도있다.

Symbol

  • 내장 심볼의 가장 대표적인 예시가 바로 Symbol.iterator이다. JavaScript 엔진은 이 심볼을 키로 갖는 메소드가 정의된 객체를 iterable 객체로 인식한다. iterable 객체로 인식되는 객체들만 for ... of 문법 등을 이용한 반복이 가능하다. Symbol.iterator를 키로 갖는 메소드를 정의해둔 내장 iterable 객체들의 예시로는 다음과 같은 것들이 있다. (원문arrow-up-right)

intersection, union, difference

set 객체는 수학적집을 구현하기 위한 자료구조다. 따라서set 객체를통해 교집합, 합집합, 차집합 등을 구현할 수 있다.

Map

  • 키와 값의 쌍으로 이루어진 컬렉션

  • 키는 중복되지 않는다

  • Map 생성자함수는 이터러블을 인수로 전달받아 Map객체를 생성한다. 이때 인수로 전달되는 이터러블은 키와 값의쌍으로 이루어진 요소로 구성되어야 한다.

  • Map객체는 키타입에 제한이 없다. 객체도 가능.

  • foreach

    • 인수: 요소값 / 키값 / 맵객체

기본

Last updated