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 객체들의 예시로는 다음과 같은 것들이 있다. (원문)
intersection, union, difference
set 객체는 수학적집을 구현하기 위한 자료구조다. 따라서set 객체를통해 교집합, 합집합, 차집합 등을 구현할 수 있다.
Map
키와 값의 쌍으로 이루어진 컬렉션
키는 중복되지 않는다
Map 생성자함수는 이터러블을 인수로 전달받아 Map객체를 생성한다. 이때 인수로 전달되는 이터러블은 키와 값의쌍으로 이루어진 요소로 구성되어야 한다.
Map객체는 키타입에 제한이 없다. 객체도 가능.
foreach
인수: 요소값 / 키값 / 맵객체
기본
Last updated