언어/JavaScript

[Map] 객체보다 더 똑똑한 자료구조

Dachaes 2025. 4. 22. 16:50
728x90
반응형
728x90

Map 

자바스크립트에서 데이터를 키-값 쌍으로 저장하는 가장 기본적인 방법은 객체(Object)를 사용하는 것입니다. 하지만 ECMAScript 2015(ES6)부터 도입된 Map 객체는 기존 객체보다 더 유연하고 강력한 키-값 쌍 저장 기능을 제공합니다.

 


1.  Map 객체란?

Map은 키-값 쌍을 저장하는 내장 객체로, 모든 자료형을 키로 사용할 수 있으며 저장된 순서를 유지합니다. 이는 일반 객체와의 큰 차이점 중 하나입니다.

const myMap = new Map();
myMap.set('key', 'value');
myMap.set(123, 'number key');
myMap.set(true, 'boolean key');
  • 위 예시처럼 문자열뿐만 아니라 숫자, 불린, 객체 등 어떤 타입도 키로 사용할 수 있습니다.

 


2.  객체(Object)와 Map의 차이

항목 객체(Object) Map
키 타입 문자열 또는 심볼만 가능 모든 자료형 가능
키 순서 보장되지 않음 입력 순서 유지
크기(size) 확인 직접 계산해야 함 size 속성으로 바로 확인 가능
반복(iteration) for...in, Object.entries 등 forEach, for...of, iterable 지원
성능 적은 수의 항목에 적합 많은 항목 추가/삭제에 더 효율적

 


3.  Map의 주요 메서드 정리

a.  set(key, value)

Map에 새로운 키-값 쌍을 추가합니다.

const map = new Map();
map.set('name', 'Alice');
map.set('age', 30);

b.  get(key)

특정 키에 해당하는 값을 반환합니다. 존재하지 않으면 undefined 를 반환합니다.

console.log(map.get('name')); // 'Alice'
console.log(map.get('job')); // undefined

c.  has(key)

해당 키가 존재하는지 boolean으로 반환합니다.

map.has('age'); // true
map.has('job'); // false

d.  delete(key)

특정 키를 삭제합니다. 성공하면 true, 실패하면 false를 반환합니다.

map.delete('name'); // true

e.  clear()

Map의 모든 요소를 제거합니다.

map.clear();
console.log(map.size); // 0

f.  size

Map에 저장된 요소 개수를 반환하는 속성입니다.

const numbers = new Map([[1, 'one'], [2, 'two']]);
console.log(numbers.size); // 2

g.  반복 관련 메서드

i.  keys(), values(), entries()

const m = new Map([
  ['a', 1],
  ['b', 2],
]);

for (let key of m.keys()) {
  console.log(key); // 'a', 'b'
}

for (let value of m.values()) {
  console.log(value); // 1, 2
}

for (let [key, value] of m.entries()) {
  console.log(key, value); // 'a' 1, 'b' 2
}

 

ii.  forEach(callback)

모든 요소를 순회하며 콜백을 실행합니다.

m.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});

 


4.  Map 사용 시 주의할 점

  • Map의 키는 참조 동일성을 기준으로 비교됩니다. 즉, {} {} 는 다른 키로 간주됩니다.
  • 객체의 프로퍼티와는 달리, Map __proto__constructor 같은 키 이름과 충돌할 일이 없습니다.
  • 반복 순서를 유지해야 하거나, 키가 다양할 경우(문자열 이외의 타입), Map이 더 적합합니다.

 


5.  마무리

  • Map은 객체보다 다양한 자료형을 키로 사용할 수 있고, 순서가 유지되며, 효율적인 메서드를 제공합니다.
  • 주요 메서드는 set, get, has, delete, clear, size, forEach, entries, keys, values 등입니다.
  • 단순한 데이터 저장에는 객체도 유효하지만, 키가 복잡하거나 성능이 중요한 경우 Map이 좋은 선택입니다.

함께 보면 좋은 자료

외부 사이트 :

블로그 글 :

 

[Hash] 해시 기반 자료구조

Hash 자바스크립트로 알고리즘 문제를 풀다 보면 Object, Map, Set과 같은 해시 기반 자료구조를 자주 만나게 됩니다. 이들은 모두 내부적으로 해시 테이블(Hash Table) 구조를 기반으로 하며, 빠른 탐색,

dachaes-devlogs.tistory.com

 


반응형

 

728x90
반응형