Map

92 阅读1分钟

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
Map 中的键值是有序的(FIFO 原则), Map 的键值对个数可以从 size 属性获取

  1. 添加成员用set
 a = function fn() {}
  var re = new Map()
  //set添加成员               
  re.set("age", 24)//key可以是字符串
  re.set(12, 34)//key可以是数字
  re.set([12, 33], 100)//可以是数组
  re.set(a, 55)//可以是函数
  console.log(re)

image.png

  1. 获取Map中的值用get
 a = function fn() {}
  var re = new Map()
  re.set("age", 24)
  re.set(12, 34)
  re.set([12, 33], 100)//引用数据作为map的key时  取值也必须是同一个引用,这里就是不同的引用,如果想要引用相同就用变量保存
  re.set(a, 55)
  console.log(re.get("age"))
  console.log(re.get(12))
  console.log(re.get([12,33]))
  console.log(re.get(a))

image.png

  1. 删除成员用delete
 var m1=new Map([["age",20],["name","karen"]])
 console.log(m1)
 m1.delete('age')//删除key为'age'的成员
 console.log(m1)

image.png

  1. clear清空Map的所以成员
 var m1=new Map([["age",20],["name","karen"]])
 console.log(m1)
 m1.clear()//清空map的所有成员
 console.log(m1)

image.png

遍历Map

 a = function fn() {}
  var re = new Map()
  re.set("age", 24)
  re.set(12, 34)
  re.set([12, 33], 100) 
  re.set(a, 55)
  //第一种遍历forEach
  re.forEach(function (el) {
    console.log(el)
  })
  //第二种遍历for of
  for (var [key, value] of re) {
  console.log(key + " = " + value);
}

image.png

Map 与 Array的转换

  var arr=[[11,10],[21,920],["hello","world"]]
  var re=new Map(arr)
  console.log(re)
  var arr2=Array.from(re)//将Map转为数组
  console.log(arr2)

image.png