JS - Map 객체
JS의 객체 중 [키, 값] 형태로 값을 담을 수 있는 Map 객체에 대한 메모다.
Map 객체
key-value
를 한 묶음으로 저장하며, 여러개의 묶음을 저장한 순서대로 순회를 할 수 있는 객체이다.
const mapObj1 = new Map();
const mapObj2 = new Map([
["key", "value"],
[{ c1: 100 }, 1212],
[1, { number: 2 }],
]);
for (let item of mapObj2) {
console.log(item);
}
// ["key", "value"]
// [{ c1: 100 }, 1212]
// [1, { number: 2 }]
위와 같은 방법으로 생성할 수 있으며, 키 값이 중복된다면 값이 대체됩니다.
키 값 중복 확인은
Same-Value-Zero
알고리즘을 통해 확인한다.
Map과 Object 차이
-
키에 사용할 수 있는 타입의 제약
- Object: String, Symbol만 사용 가능
-
{key: value}의 갯수
-
Map: size 프로퍼티로 확인
-
Object: 전체를 순회하여 확인
-
-
처리시간
- 빈번한 key, value의 추가/삭제는 Map의 성능이 더 좋은 경우가 있다고 함
Methods
메소드 | 파라미터 | 반환타입 | 기능 |
---|---|---|---|
set() |
[key, value] |
인스턴스 |
순서대로 [key, value]형태 값 추가 |
get() |
key |
value |
키에 해당하는 값을 반환 |
has() |
key |
boolean |
해당 하는 키의 존재여부 확인 |
entries() |
- |
Iterartor Object |
인스턴스 순서대로 Iterartor Object로 반환 |
keys() |
- |
Iterartor Object |
인스턴스 키를 순서대로 Iterartor Object로 반환 |
values() |
- |
Iterartor Object |
인스턴스 값을 순서대로 Iterartor Object로 반환 |
Symbol.iterator() |
- |
Iterartor Object |
entries() 와 동일 |
forEach() |
callback[, this object] |
undefined |
callback 함수 인자로 value, key, 인스턴스 순 전달 |
delete() |
key |
boolean |
삭제 할 경우 true, 없으면 false |
clear() |
- |
- |
Map 객체 삭제 X, 모든 entry 삭제 |