Map的基本使用
创建并初始化Map
const m=new Map([
["key1","val1"],
["key2","val2"]
])
操作Map
- 使用set方法向Map中添加键值对
const m=new Map()
m.set("firstname","firstvalue").set("secondname","secondname")
- 使用get和has方法对Map进行查询
console.log(m.has("firstname")) //true
console.log(m.get("firstname")) //firstvalue
- 使用delete方法删除Map中的键值对
m.delete("firstname") //只删除一个键值对
- 使用size属性获取键值对数量
console.log(m.size) //1
- 使用clear方法清除所有键值对
m.clear()
Map的顺序与迭代
Map的顺序
- 描述
Map与Object主要的差异是:Map实例会维护键值对的插入顺序,因此可以根据插入顺序执行迭代操作。
Map的迭代
- 使用entries方法迭代Map
const m=new Map([
["key1","val1"],
["key2","val2"],
["key3","val3"]
])
for(let pair of m.entries()){
console.log(pair)
}
//["key1","val1"]
//["key2","val2"]
//["key3","val3"]
注:可以使用拓展操作符把映射转化为数组
const m=new Map([
["key1","val1"],
["key2","val2"],
["key3","val3"]
])
console.log([...m]) //[[key1,val1],[key2,val2],[key3,val3]]
- 使用回调函数的方式迭代Map
通过forEach(callback,thisArg)迭代Map,其中callback函数中的参数为键值对,thisArg为重写的this
const m=new Map([
["key1","val1"],
["key2","val2"],
["key3","val3"]
])
m.forEach((val,key)=>console.log(`${key}:${val}`))
//key1:val1
//key2:val2
//key3:val3
- 使用keys迭代key值
for(let key of m.keys()){
console.log(key)
}
//key1
//key2
//key3
- 使用values迭代value值
for(let key of m.values()){
console.log(key)
}
//value1
//value2
//value3