Map是一种键值队的集合,和对象Object类似。两者的区别:
一、Map和Object 的区别
- 键的类型:在Map中,键可以是任何类型(包括对象、函数、undefined、NaN等等);而在Object中,键只能是字符串或者符号。
- 有序性:在Map中,键值对是按照插入(添加)的顺序排列的;而Object不能保证顺序
二、创建:
创建空的Map,通过set()添加数据:
const map1 = new Map() map1.set(1,2) map1.set('color','red') map1.set({a:1},'北京')
使用二维数组初始化Map:
const map = new Map([ [1,2], ['color','red'], [{a:1},'北京'] ])
上面两种代码均打印如下:
三、实例的属性和方法
- size: 返回Map实例成员总数
console.log(map1.size) //3
- set(key,value):添加key对应的value,返回Map 结构本身
map1.set(1,2) map1.set('color','red') map1.set({a:1},'北京')
- get(key): 获取key对应的值
console.log(map1.get(1))// 2
- delete(key): 删除某键值队,返回一个布尔值,表示删除是否成功
console.log(map1.delete(1)) //true
- has(key): 某个键是否在当前Map对象之中
console.log(map1.has(1)) //false
- clear(): 清空所有的键值队
map1.clear()
四、遍历
- keys():返回键名的遍历器
for(let i of map1.keys()){ console.log(i) //1 color {a:1} }
- values():返回键值的遍历器
for(let i of map1.values()){ console.log(i) //2 red 北京 }
- entries():返回键值对的遍历器
for(let [key,value] of map1.entries()){ console.log(key,value) }
- forEach():遍历每个成员
map1.forEach((item,key) =>{ console.log(item,key) })
- for...of:Map内部已实现了迭代器,所以可以是用for...of
for(let i of map1){ console.log(i) //[1,2] ['color','red'] [{a:1},1] }