Bin's Blog

Map() 객체 본문

JavaScript

Map() 객체

hotIce 2023. 5. 4. 10:32
728x90

1.  Map() 객체란?

Map() 객체는 키-값 쌍을 저장하는 데이터 구조이다. ECMAScript 6(ES6-2015)에 도입됐다. 객체와 비슷하게 동작하지만 몇 가지 다른 특징이 존재한다.

 

2. Map() 객체의 특징

  1. 키의 다양성: 기존 객체에서는 문자열 또는 심볼만 키로 사용할 수 있었다 Map 객체는 다양한 데이터 타입을 키로 사용할 수 있다. 객체, 함수, 원시 타입(문자열, 숫자, boolean 등) 모두 가능하다. 
  2. 순서 보존:  Map 객체는 삽입 순서를 유지한다. 즉, 키-값 쌍을 순회할 때 삽입된 순서대로 처리된다. 기존의 객체는 원래 순서를 유지하지 않고 있다가 ES6부터는 대부분 자바스크립트 엔진에서 객체의 속성을 정의한 순서대로 속성을 순회한다. 단, 이는 문자열 키를 갖는 속성에 대해서만 해당되며, 심볼 키에 대해서는 해당되지 않는다. 그러나 ECMAScript 명세에 따르면, 객체의 속성 순서는 아직 완전히 보장되지 않는다. 따라서 순서가 중요한 경우 Map 객체를 사용하는 것이 더 안전하다. 
  3. 크기 정보: Map 객체는 ".size" 속성을 통해 현재 저장된 키-값 쌍의 개수를 얻을 수 있다. 객체에서는 직접 크기를 계산해야 한다. ( 예) Object.keys(객체).length;)
  4. 키-값 쌍 관련 메서드: Map 객체는 키-값 쌍을 추가, 조회, 수정, 삭제하는 데 사용되는 다양한 메서드를 제공한다. 주요 메서드로는 "추가-.set(key, value)", "조회-.get(key)", "조회-.has(key)", "삭제-.delete(key)", "다 삭제.clear()"가 있다.
const myMap = new Map();

// 키-값 쌍을 추가
myMap.set('name', 'John');
myMap.set(1, 'number');
myMap.set(true, 'boolean');
myMap.set({ key: 'object' }, 'an object key');

// 키-값 쌍의 개수를 조회
console.log(myMap.size); // 4

// 키에 해당하는 값을 조회
console.log(myMap.get('name')); // 'John'

// 키가 Map 객체에 존재하는지 확인
console.log(myMap.has(1)); // true

// 키-값 쌍을 삭제
myMap.delete(true);
console.log(myMap.size); // 3

// 모든 키-값 쌍을 삭제
myMap.clear();
console.log(myMap.size); // 0

 

* get()과 has()의 차이

  • 둘 다 key를 인자로 사용해서 키가 존재하는지 안하는지 확인을 하는데 서로 다른 목적으로 사용된다. 
  • .get()의 경우는 키가 존재하면 키에 해당하는 값을 반환하고 그렇지 않으면 undefined를 반환한다.
  • .has()의 경우는 키가 존재하면 true, 아니면 false를 반환한다.
728x90

'JavaScript' 카테고리의 다른 글

실행 컨텍스트  (0) 2023.05.08
undefined와 null  (0) 2023.05.05
불변 객체  (0) 2023.05.03
JavaScript Array.map() 함수  (0) 2023.05.02
불변값과 가변값  (0) 2023.05.01