JavaScript - Map
in JS on 공부, Javascript
객체는 iterable하지 않다.
안쪽에 있는 요소들을 돌면서 하나하나 뭐 할 수 있는 걸 iterable한다고 한다.
const o = { a:1, b:2, c:3 }
//객체를 배열로 변환하려면
const obj2Arr = obj => {
const arr = []
for(let key in obj){
if(obj.hasOwnProperty(key)){
arr.push([key, obj[key]])
}
}
return arr
}
//키를 문자열로 인식해서 키 값의 unique함을 인식하지 못한다. 프로퍼티 개수를 직접 파악할 수 없다.
Map
- [key, value] 쌍으로 이루어진 요소들의 집합
- 순서를 보장하며, iterable이다.
const map = new Map()
map.set('name', 'YJ') //추가하기
console.log(map.size)
console.log(map.get('name'))
map.delete('name')
map.has('name')
//초기값 지정 가능, 근데 iterable 가능한 애들이 배열 쌍으로 지정되어 있어야 한다.
const arr = [[10,10], ['1', '2'], [false, true]]
const map1 = new Map(arr)
const keys = map1.keys()
keys // MapIterator {10, "10"}
keys.next().value //10
keys.next().value //10
keys, values, entries 같은 경우는 object일 경우 배열로 반환하고 set과 map은 setiterator, mapiterator로 반환한다. 그래서 object의 경우 next() 이런거 못한다.