Map과 Set

Map과 Set 객체

Map 객체의 생성

Map 객체는 데이터를 수집하여 활용하기 위한 객체이다. 키와 값의 쌍을 Map 객체 안에 저장해서 사용한다.
Object와의 차이점으로는

  1. 데이터를 수집하기 위한 다양한 메서드들
  2. Map 객체는 키 타입에 제한이 없다.
  3. 해시 테이블을 이용하여 검색 속도가 빠르다.
  4. 이터러블하고 for/of문으로 순회하면 키와 값으로 구성된 배열을 반환한다.
  5. size 프로퍼티로 데이터 개수를 구할 수 있다.
1
2
let zip = new Map([["Tom", "131-8634"], ["Huck", "556-0002"]]);
console.log(zip);
1
2
3
4
5
6
7
8
9
제네레이터를 이용한 이터레이터 생성
function* makeZip() {
yield ["Tom", "131-8634"],
yield ["Huck", "556-0002"]
}
const zips = makeZip();
zip = new Map(zips);
console.log(zip);
console.log(zip.size);

Map 객체의 메서드

Map.prototype의 메서드를 상속받는다.

clear() : Map 객체 안의 모든 데이터를 삭제한다.
delete(key) : key가 가리키는 데이터를 삭제한다.
entries() : 데이터값을 저장한 이터레이터를 데이터를 삽입한 순서대로 반환한다.
forEach(callback) : 모든 데이터를 대상으로 콜백함수 실행.
get(key) : key가 가리키는 데이터를 반환한다.
has(key) : 키가 가리키는 데이터가 있는지 판정한다.
keys() : 데이터 키를 값으로 가지는 이터레이터를 반환한다.
set(key, value) : 키가 key이고 값이 value인 데이터를 추가한다.
values() : 데이터 값을 값으로 가지는 이터레이터를 반환한다.

Set

Set 객체는 중복되지 않는 유일한 데이터를 수집하여 활용하기 위한 객체이다. Set 객체는 데이터의 값의 단순 집합으로 간주한다. Set 객체는 외부에서 키를 사용하여 데이터 값을 추가/삭제/검색할 수 있다는 장점이 있다. 또한 값의 데이터 타입에 제한이 없다.

1
2
let set = new Set();
console.log(set);

초기 데이터를 인수로 지정해서 생성할 수도 있다. 이 때 초기 데이터는 값을 가지는 이터러블한 객체이다.

  • 동일성의 정의

Set 객체에서의 동일성은 일반적인 동등 연산자(===)와는 차이가 있다. NaN과 NaN이 같고 +0과 -0이 같다.

Set 객체의 메서드

add(value) : Set 객체에 데이터 값 value를 추가한다.
clear() : Set 객체 안의 모든 데이터를 삭제한다.
delete(value) : Set 객체에서 value를 값으로 갖는 데이터를 삭제한다.
values() : Set 객체에서 데이터 값을 값으로 갖는 이터레이터를 반환한다.
forEach(callback) : Set 객체의 모든 데이터를 대상으로 콜백함수 실행.
has(value) : Set 객체에서 value를 값으로 갖는 데이터가 있는지 판별.
keys() : Set 객체에서 데이터 값을 값으로 갖는 이터레이터를 반환.
values() : Set 객체에서 데이터 값을 값으로 갖는 이터레이터를 반환한다.