Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- python
- 비주얼 스튜디오 코드
- GIT
- Functional Programming
- 자료구조
- ES6
- 파이썬
- Linux
- html
- nodeJS
- stream
- Schema Registry
- https
- node.js
- NPM
- ChatGPT
- Certbot
- V8
- Express
- MSA
- 알고리즘
- vscode
- 함수형프로그래밍
- typescript
- Let's Encrypt
- MSK
- nestjs
- javascript
- Generics
- docker
Archives
- Today
- Total
JangBaGeum.gif
[JavaScript] ES6 Map() 본문
Map()
- Map()은 Javascript ES6의 key-value 쌍의 컬렉션이다.
- key는 중복될 수 없다.
- key를 이용해 값을 찾거나(get), 설정(set)할 수 있다.
- key로 사용할 수 있는 데이터 형은 string, symbol, object, function이며 number는 사용할 수 없다.
- 엔트리 조회와 추가 - map.get(), map.set()
const menu = new Map()
menu.set('001', {code: "001", name: "콜라"})
menu.set('002', {code: "002", name: "환타"})
console.log(menu.get('001')) // {code: '001', name: '콜라'}
//
const lastName = new Map(
[
["ㄱ", "김씨"],
["ㄴ", "남씨"],
["ㄷ", "동씨"]
]
)
console.log(lastName.get("ㄱ")) // 김씨
//
const month = new Map().set("01", "January").set("02", "February")
console.log(month.get("02")) // February
- map.has(), map.size, map.delete(), map.clear()
console.log(lastName.has("ㄱ")) // true
console.log(manu.size) // 2
lastName.delete("ㄱ")
console.log(lastName.has("ㄱ")) // false
menu.clear()
console.log(you.size) // 0
Object와 Map의 비교
- Object의 키는 String, Symbol이며, Map의 키는 모든 값을 가질 수 있다.
- Object는 크기를 수동으로 추적해야 하지만, Map은 크기를 쉽게 얻을 수 있다.
- Map은 사입된 순서대로 반복된다.
- Object에는 prototype이 있어 Map에 기본 키들이 있다.(map = Object.create(null)을 사용하여 우회 가능)
Object와 Map 중 어느 것을 사용하는 것이 좋을까?
- 실행 시까지 키를 알 수 없고, 모든 key가 동일한 type이며 모든 value들이 동일한 type일 경우에는 Object 대신에 Map을 권장.
- 각 개별 요소에 대해 적용해야 하는 로직이 있을 경우에는 Object를 사용하는 것을 권장.
Map의 iterable object
- map 내의 key 혹은 value들을 순회할 수 있는 iterable object를 반환한다.
- map.keys(), map.values()
const menu = new Map()
menu.set('001', {code: "001", name: "콜라"})
menu.set('002', {code: "002", name: "환타"})
menu.set('003', {code: "003", name: "사이다"})
console.log([...menu.keys()]) // ["001", "002", "003"]
console.log([...menu.values()]) // [{code: "001", name: "콜라"}, {code: "002", name: "환타"}, {code: "003", name: "사이다"}]
- map 내의 모든 엔트리를 순회할 수 있는 iterable object를 반환한다.
- map.entries(), map.next()
const menu = new Map()
menu.set('001', {code: "001", name: "콜라"})
menu.set('002', {code: "002", name: "환타"})
menu.set('003', {code: "003", name: "사이다"})
const iterableMenu = menu.entries()
console.log(iterableMenu.next()) // {value: ['001', {code: "001", name: "콜라"}], done: false}
console.log(iterableMenu.next()) // {value: ['002', {code: "002", name: "환타"}], done: false}
console.log(iterableMenu.next()) // {value: ['003', {code: "003", name: "사이다"}], done: true}
- map 순회
- for-of, forEach
- forEach()의 인자는 value, key, map 순서임
for (let [key, value] of menu) {
...
}
menu.forEach((value, key, map) => {
...
})'ETC > 알고리즘 & 문법' 카테고리의 다른 글
| [TypeScript] 제네릭을 이용한 객체 배열 Group by (2) | 2022.11.24 |
|---|---|
| [JavaScript]Date Object에서 Year/Month/Date 얻기 (1) | 2022.11.17 |
| [JavaScript] Convert ES6 Iterable to Array (0) | 2022.11.16 |
| [FP] 순수 함수와 비 순수 함수 (0) | 2022.10.11 |
| [TypeScript] Generics (0) | 2022.07.13 |