ES6之map集合

59 阅读1分钟

ES6之map集合

const mp = new Map([[{},0]]);
mp.set("a", 1)
mp.set({}, 2)
console.log(mp)
console.log(mp.size)
console.log(mp.get("a"))
// console.log(mp.has({}))
// console.log(mp.delete({}))
// console.log(mp.clear())
console.log(mp)
const result = [...mp]
console.log(result);
mp.forEach((value, key, mp) => {
    console.log(value, key, mp)
})

map 集合是为了解决原来对象存储中键值对的问题。在对象存储中,使用属性来存储键值对。键不可以重复,只能是字符串,如果是其他类型会转换为字符串。无法获取键值对的数量,键名也会与原型上的命名产生冲突。
map 集合使用 new 一个 Map 来创建。里面必须传入一个可迭代对象,而且由于要存储键值对,所以每一次迭代的数据是一个两项的数组。数组的迭代中,第一次迭代键,第二次迭代值。
同样有 size ,set ,get ,has ,delete ,clear 。注意:set(键,值) 如果之前没有这个键,则会重新创建一个,如果有,则会修改原来的值,保证只能有一个键名。判断重复的方式和 set 类似,使用 Object.is 判断。我们只是保证键的唯一性,不保证值。
由于 set 集合是一个可迭代对象,可以使用 for-of 循环。也可以使用 forEach 方法,第一个参数是值,第二个参数是键,第三个参数是 map 本身。
如果转换为数组,数组的每一项是一个映射关系的数组。