목표

  • js 데이터 컬랙션 맵(map)의 등장 배경을 이해한다.
  • js 데이터 컬랙션 맵(map)을 이해한다.

맵의 등장 배경

  • 객체만 봐서는 어떤 의도를 가지고 만들었는지 명확하지 않다.

맵의 개념 요약

  • key - value 로 이루어진 컬렉션
  • key를 사용해 value를 get, set
  • key들은 중복 불가. 한개의 key에는 하나의 value만
  • key 로 사용할 수 있는 데이터형: string, symbol(ES6), object, function
    • number는 불가능

맵의 구체적인 개념

  • 맵은 값의 개수을 알수있는 프로퍼티가 존재하여 좀더 쉽고 명확하게 개수를 확인할수 있다.
let emoticon = { 
    "/와우/" : "wow.png",
    "/나우/" : "now.png",
    "/하트/" : "love.png"
}
// 객체 개수를 알아내기 
object.keys(emoticon).length;   // 3

let mapEmoticon = new Map()
    .set("/와우/", "wow.png")
    .set("/나우/", "now.png")
    .set("/하트/", "love.png")
// 객체 개수를 알아내기
mapEmoticon.size                // 3
  • 객체는 순회하기 위해서 키를 알아낸후 순회해야하지만, 맵은 순회가능한 컬랙션이다.
  • 맵에는 순회가능한 forEach 메서드가 제공되기에 간단하고 명확하게 값을 확인할 수 있다.
// 키-값 객체의 순환 
Object.keys(emoticon).forEach( ele => { console.log (ele)} )
Object.values(emoticon).forEach( ele => { console.log (ele)} )
// Map의 순환
mapEmoticon.forEach( (val, key) => { console.log(key, val)})
  • 맵은 키-값의 추가와 제거에 맵은 좋은 성능을 보이는 반면, 객체는 키-값 쌍의 추가와 제거를 위한 최적화가 되어있지않아 좋은 성능을 기대하기는 어렵다.

Related Post

  • javascript data collection - 객체
  • javascript data collection - 배열

References

자바스크립트 코딩의 기술
[JS #5] ES6 Map(), Set()