티스토리 뷰

JAVASCRIPT

[Javascript] Map

jeongah story 2020. 4. 19. 16:24

[모던자바스크립트]

 

10.4.4 Map

: 데이터를 수집하여 활용하기 위한 객체

: 값의 고유한 식별 정보인 '키- 값' 의쌍을 Map 객체 안에 저장하며 순서도 기억하는 객체입니다.

 

 

Object와 Map 비교

Object는 값에 키를 할당할 수 있고, 그 키로 값을 얻을 수 있고, 키를 삭제할 수 있으며 어떤 키에 값이 존재하는지 확인할 수 있다는 점에서 Map과 유사합니다. 이런 이유에 더해, 이전에는 내장된 대체제가 없었기 때문에, Object Map 대신 사용하곤 했습니다.
  Map Object
의도치 않은 키 Map은 명시적으로 제공한 키 외에는 어떤 키도 가지지 않습니다.

Object는 프로토타입을 가지므로 기본 키가 존재할 수 있습니다. 주의하지 않으면 직접 제공한 키와 충돌할 수도 있습니다.

참고: ES5부터, 프로토타입으로 인한 키 충돌은 Object.create(null)로 해결할 수 있지만, 실제로 쓰이는 경우는 적습니다.

키 자료형 Map의 키는 함수, 객체 등을 포함한 모든 값이 가능합니다. Object의 키는 반드시 String 또는 Symbol이어야 합니다.
키 타입 Map객체는 키 타입에 제한이 없다. Object객체는 키로 문자열만 사용할 수 있다.
키 순서

Map의 키는 정렬됩니다. 따라서 Map의 순회는 삽입순으로 이뤄집니다.

Object의 키는 정렬되지 않습니다.

참고: ECMAScript 201 이후로, 객체도 문자열과 Symbol 키의 생성 순서를 유지합니다. ECMEScript 2015 명세를 준수하는 JavaScript 엔진에서 문자열 키만 가진 객체를 순회하면 삽입 순을 따라갑니다.

크기 Map의 항목 수는 size 속성을 통해 쉽게 알아낼 수 있습니다.  Object는 프로퍼티 개수를 수동으로 계산해야 한다.
순회

Map순회 가능하므로, 바로 순회할 수 있습니다.

Map 객체는 반복가능(이터러블)하며 for/of문으로 순회하면 키와 값으로 구성된 배열을 반환한다.

Object를 순회하려면 먼저 모든 키를 알아낸 후, 그 키의 배열을 순회해야 합니다.
성능

잦은 키-값 쌍의 추가와 제거에서 더 좋은 성능을 보입니다.

Map 객체는 내부적으로 해시 테이블을 활용하기 때문에 데이터 검색속도가 빠르다.

잦은 키-값 쌍의 추가와 제거를 위한 최적화가 없습니다.

 

 

Map 객체의 생성

Map() 새로운 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.prototype.forEach(callbackFn[, thisArg])

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

 

Map

Map 객체는 키-값 쌍을 저장하며 각 쌍의 삽입 순서도 기억하는 콜렉션입니다.

developer.mozilla.org

 

'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
댓글
© 2018 eh2world