2-8 新的数据结构Map

37 阅读1分钟

map object

  1. map 跟 object 都是键值对的方式,里面存的key,map相对灵活
  2. 应用场景跟object是一样的
  3. 判断当前键值对是否包含某个属性
  4. object需要循环遍历当前属性再去判断
  5. map直接通过.has()
  6. map的key也更加的多种多样
  7. map也有size的属性,对象里面没有
  8. 对象有自己的原型,原型链上面的键名可能回冲突
  9. 如果频繁的增删,map的性能更加有优势
let m = new Map()
let obj = {
  name = 'juejin'
}
m.set(obj, 'es')
console.log(m)
console.log(m.get(obj))
// m.delete(obj)
console.log(m.has(obj))
let map = new Map([
  ['name','xx'],
  ['age', 5]
])
console.log(map)
console.log(map.size)
console.log(map.get('age'))
map.set('name', 'zhangsan')

// 遍历

map.forEach((value, key) => console.log(value, key))
for(let [key, value] of map){
  console.log(key, value)
}

for(let [key] of map.keys()){
  console.log(key)
}
for(let [value] of map.values){
  console.log(value)
}

for(let [key, value] of map.entries){
  console.log(key, value)
}

//weakMap

let wm = new weakMap()
wm.set([1], 2)
wm.set({
  name: 'juejin'
}, 'es')
// weakMap 不支持clear,也不支持遍历,也没有size


let wm = new weakMap()
let elem = document.getElementsByTagName('h1)
wm.set(elem, 'info')
console.log(wm.get(elem))