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
반응형
'언어 > JavaScript' 카테고리의 다른 글
[filter()] 조건에 맞는 요소를 필터링하기 (0) | 2025.04.23 |
---|---|
[Set] 중복 없는 데이터 관리하기 (0) | 2025.04.22 |
[Object] 자바스크립트의 객체 (0) | 2025.04.19 |
[Hash] 해시 기반 자료구조 (0) | 2025.04.18 |
[TDZ] 선언했는데 왜 에러가 날까? (0) | 2025.04.15 |