https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Keyed_collections
ECMAScript 6에서 값들을 매핑하기 위한 새로운 데이터 구조를 소개 하고 있다. 그중 하나인 Map객체는 간단한 키와 값을 서로 연결(매핑)시켜 저장하며 저장된 순서대로 각 요소들을 반복적으로 접근할 수 있도록 한다.
var sayings = new Map();
sayings.set("dog", "woof");
sayings.set("cat", "meow");
sayings.set("elephant", "toot");
sayings.size; // 3
sayings.get("fox"); // undefined
sayings.has("bird"); // false
sayings.delete("dog");
for (var [key, value] of sayings) {
console.log(key + " goes " + value);
}
// "cat goes meow"
// "elephant goes toot"
[Object와 Map] 비교
->KEY : VALUE의 형태는 ES5의 json객체도 있다.
그렇다면 왜 Map객체를 사용할까?
- Object의 키는 Strings이며, Map의 키는 모든 값을 가질 수 있다.
- Object는 크기를 수동으로 추적해야하지만, Map은 크기를 쉽게 얻을 수 있다.
- Map은 삽입된 순서대로 반복된다.
- 객체(Object)에는 prototype이 있어 Map에 기본 키들이 있다. (이것은 map = Object.create(null) 를 사용하여 우회할 수 있다. )
=> 내가 생각하는 가장 큰 차이는 key를 String이 아닌 다른 형태도 제공한다는 점과 반복문의 사용이 가능하다는 점인것 같다.
Object 혹은 Map중에 어느 것을 사용할지를 결정하는데 도움을 줄 두가지 팁이 있다:
- 실행 시까지 키를 알수 없고, 모든 키가 동일한 type이며 모든 값들이 동일한 type일 경우에는 objects를 대신해서 map을 사용해라.
- 각 개별 요소에 대해 적용해야 하는 로직이 있을 경우에는 objects를 사용해라.
'Javascript > 문법' 카테고리의 다른 글
[javascript ES6] reduce(누산기) (0) | 2022.04.23 |
---|---|
[Javascript ES6] join (0) | 2022.04.02 |
[Javascript ES6] Promise.all() (0) | 2022.03.02 |
[Javascript ES6] (MAP, FILTER, FIND) 사용정리 (0) | 2022.01.31 |
[Javscript ES6] Spread Operator (스프레드 연산자) (0) | 2021.12.12 |