티스토리 뷰
[모던자바스크립트]
10.4.4 Map
: 데이터를 수집하여 활용하기 위한 객체
: 값의 고유한 식별 정보인 '키- 값' 의쌍을 Map 객체 안에 저장하며 순서도 기억하는 객체입니다.
Object와 Map 비교
Object는 값에 키를 할당할 수 있고, 그 키로 값을 얻을 수 있고, 키를 삭제할 수 있으며 어떤 키에 값이 존재하는지 확인할 수 있다는 점에서 Map과 유사합니다. 이런 이유에 더해, 이전에는 내장된 대체제가 없었기 때문에, Object를 Map 대신 사용하곤 했습니다.
Map |
Object |
|
---|---|---|
의도치 않은 키 | Map 은 명시적으로 제공한 키 외에는 어떤 키도 가지지 않습니다. |
참고: ES5부터, 프로토타입으로 인한 키 충돌은 |
키 자료형 | Map 의 키는 함수, 객체 등을 포함한 모든 값이 가능합니다. |
Object 의 키는 반드시 String 또는 Symbol 이어야 합니다. |
키 타입 | Map 객체는 키 타입에 제한이 없다. |
Object 객체는 키로 문자열만 사용할 수 있다. |
키 순서 |
|
참고: ECMAScript 201 이후로, 객체도 문자열과 |
크기 | Map 의 항목 수는 size 속성을 통해 쉽게 알아낼 수 있습니다. |
Object는 프로퍼티 개수를 수동으로 계산해야 한다. |
순회 |
Map 객체는 반복가능(이터러블)하며 for/of문으로 순회하면 키와 값으로 구성된 배열을 반환한다. |
Object 를 순회하려면 먼저 모든 키를 알아낸 후, 그 키의 배열을 순회해야 합니다. |
성능 |
잦은 키-값 쌍의 추가와 제거에서 더 좋은 성능을 보입니다. Map 객체는 내부적으로 해시 테이블을 활용하기 때문에 데이터 검색속도가 빠르다. |
잦은 키-값 쌍의 추가와 제거를 위한 최적화가 없습니다. |
Map 객체의 생성
Map() 새로운 Map 객체를 생성합니다.
Map 속성
- Map.length : 값이 0인 속성입니다. 요소의 수는 Map.prototype.size로 알아낼 수 있습니다.
- get Map[@@species] : 파생 객체를 생성하는데 사용하는 생성자 함수입니다.
- Map.prototype : Map생성자의 프로토타입을 나타냅니다. 모든Map인스턴스에 속성을 추가할 수 있습니다.
Map.prototype 메서드
메서드 | 설명 |
clear() | Map객체 안에 있는 모든 데이터를 key/value pair 삭제한다. |
delete(key) | 주어진 키(Key)와 해당되는 값(Value)를 제거하고 제거하기 전에 Map.prototype.has(key)가 반환했던 값을 반환한다. 그 후의 Map.prototype.has(key)는 false를 반환한다. |
entries() |
Map 객체가 가진 데이터(키와 값 쌍) 값을 array 로 집어넣은 순서대로 저장한 이터레이터를 데이터를 삽입한 순서대로 반환한다. |
forEach(callback) |
Map객체의 모든 데이터를 대상으로 callback 함수를 실행한다. 이때 실행 순서는 데이터가 삽입된 순서이다. Map 객체 안에 존재하는 각각의 key/value pair에 집어넣은 순서대로 callbackFn을 부른다. 만약 thisArg 매개변수가 제공되면, 이것이 각 callback의 this 값으로 사용된다. |
get(key) |
주어진 키(Key)에 해당되는 값(value)을 반환하고, 만약 없으면 undefined를 반환한다. |
has(key) |
Map 객체 안에 주어진 key/value pair가 있는지 검사하고 Boolean 값을 반환한다. |
keys() |
Map 객체에서 데이터 키를 값으로 집어넣은 순서대로 가지고 있는 Iterator 객체를 반환한다. |
set(key, value) |
Map 객체에서 key고 값이 value인 데이터를 추가하고, Map 객체를 반환한다. |
values() |
Map 객체에서 데이터 값(Value)들을 집어넣은 순서대로 가지고 있는 Iterator 객체를 반환한다. |
Map.prototype[@@iterator]() |
Map 객체 안의 모든 요소들을 [key, value] 형태의 array 로 집어넣은 순서대로 가지고 있는 Iterator 객체를 반환한다. |
See the Pen [Javascript] Map by jeongahlee (@jeongahlee) on CodePen.
출처 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Map
'JAVASCRIPT' 카테고리의 다른 글
[Javascript] 이름공간 (0) | 2020.04.19 |
---|---|
[Javascript] Set (0) | 2020.04.19 |
[javascript] 스코프 (0) | 2020.04.12 |
[javascript] ECMAScript6의 배열과 새롭게 추가된 기능 (0) | 2020.04.11 |
[javascript30] 시계 (0) | 2020.04.08 |