Map 객체

김기훈·2023년 3월 9일
0

자바스크립트

목록 보기
14/17

Map

Map 객체는 키와 값의 쌍으로 이루어진 자료구조이다.

Map 객체는 객체와 유사하지만 다음과 같은 차이가 있다.

구분객체Map 객체
키로 사용할 수 있는 값문자열 또는 심벌 값객체를 포함한 모든 값
이터러블XO
요소 개수 확인 방법object.keys(obj).lengthmap.size

1. Map 객체의 생성

Map 객체는 Map 생성자 함수로 생성한다.
Map 생성자 함수에 인수를 전달하지 않으면 빈 Map 객체가 생성된다.

const map = new Map();

console.log(map); // Map(0) {}

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

const map1 = new Map([["key1", "value1"], ["key2", "value2"]]);
console.log(map1); // {"Key1" => "value1", "key2" => "value2"}

Map 생성자 함수는 인수로 전달한 이터러블에 중복된 키를 갖는 요소가 존재하면 값이 덮어써진다. → Map 객체에는 중복된 키를 갖는 요소가 존재할 수 없다.

const map = new Map([["key1", "value1"], ["key1", "value2"]]);
console.log(map); // Map(1) {"key1" => "value2"}

2. 요소 개수 확인

Map.prototype.size 프로퍼티를 사용한다.

const { size } = new Map([["key1", "value1"], ["key2", "value2"]]);
  
console.log(size); // 2
const map = new Map([["key1", "value1"], ["key2", "value2"]]);

map.size = 10; // size 프로퍼티에 숫자를 할당하여 Map 객체의 요소 개수를 변경할 수 없다.
console.log(map.size); // 2

3. 요소 추가

Map.prototype.set 메서드를 사용한다.

const map = new Map();
console.log(map); // Map(0) {}

map.set("key1", "value1");
console.log(map); // Map(1) {"key1" => "value1"}

set 메서드는 새로운 요소가 추가된 Map 객체를 반환한다.
set 메서드를 호출한 후에 set 메서드를 연속적으로 호출(method chaining)할 수 있다.

const map = new Map();

map
	.set("key1", "value1")
	.set("key2", "value2");

console.log(map); // Map(2) {"key1" => "value1", "key2" => "value2"}

4. 요소 취득

Map.prototype.get 메서드를 사용한다.

const map = new Map();

map
	.set("key1", "value1")
	.set("key2", "value2");

console.log(map.get('key1'));   // value1

5. 요소 순회

Map 객체는 이터러블이면서 동시에 이터레이터인 객체를 반환하는 메서드를 제공한다.

Map 메서드 설명
Map.keys()Map 객체에서 요소키를 값으로 갖는 이터러블이면서 동시에 이터레이터인 객체를 반환한다.
Map.values()Map 객체에서 요소값를 값으로 갖는 이터러블이면서 동시에 이터레이터인 객체를 반환한다.
Map.entries()Map 객체에서 요소키와 요소값을 값으로 갖는 이터러블이면서 동시에 이터레이터인 객체를 반환한다.
const map = new Map([['key1', 'value1'], ['key2', 'value2']])

for (const key of map.keys()) {
  console.log(key); // key1, key2
}

for (const value of map.values()) {
  console.log(value); // value1, value2
}

for (const entry of map.entries()) {
  console.log(entry); // (2) ['key1', 'value1'], (2) ['key2', 'value2']
}
profile
평생 공부하기

0개의 댓글

관련 채용 정보