持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情
Map是ES6中新增的一种数据结构,它类似于js中的对象(object)结构,都是键值对的集合,只不过,object对象结构的键只能是字符串,但Map中的键可以使用各种类型的值。下面我们来看下Map的基本用法。
const m = new Map()
const obj = { name: 'wang' }
m.set(obj, '111')
上述代码中,我们通过map构造函数生成一个Map数据,然后通过set方法为其增加属性,将对象obj作为其键,'111'作为值,然后在控制台打印出m的值如下:
从上述结果可以看出,我们可以将一个对象obj作为Map数据的键,这在Object数据中是不支持的。
Map属性及方法
- size:Map数据的成员总数
- Map.prototype.set(key, value):设置Map的键值对,并返回Map数据,如果key值已经存在,则会更新其对应的value值,否则就新增加该键。
- Map.prototype.get(key):获取Map中的某个键值
- Map.prototype.has(key):检测Map中是否有某个键值,返回布尔值
- Map.prototype.delete(key):删除成员,返回布尔值
- Map.prototype.clear():清除所有成员
其用法如下:
const m = new Map()
const obj = { name: 'wang' }
m.set(obj, '111')
m.size // 1
m.get(obj) // "111"
m.has(obj) // true
m.delete(obj) // true
m.has(obj) // false
Map遍历
Map中的遍历方法主要有以下几种:
- Map.prototype.keys():Map键名遍历器
- Map.prototype.values():Map键值遍历器
- Map.prototype.entries():Map所有成员的遍历器
- Map.prototype.forEach():遍历Map的所有成员
其使用方法如下:
const map = new Map([
['name', 'wang'],
['age', 20]
])
for (let key of map.keys()) {
console.log(key)
}
// name
// age
上述代码中,Map构造函数中接收一个数组作为参数,生成的map数据中包含name和age两个成员,然后通过map.keys()方法就可以得到键名的遍历器,对其遍历输出时就打印出name和age两个键名。
for (let value of map.values()) {
console.log(value)
}
// wang
// 20
同样还是使用上面同一个Map数据,通过map.values()方法就可以得到所有值的遍历器,对其遍历会输出Map中所有值的结果,也就是wang和20。
for (let [key, value] of map.entries()) {
console.log(key, value)
}
// name wang
// age 20
map.entries()方法可以得到所有成员的遍历器,对其遍历时,就可以得到成员的键和值。