ES6 新增的Map数据结构
虽然网上很多讲解 还是打算自己整理一下来加深印象
Map可以接受数组作为参数,数组成员还是一个数组,其中有两个元素,一个表示键一个表示值。
const map2 = new Map([
['name', 'Aissen'],
['age', 12]
])
map2 // {"name" =>Aissen, "age" => 12}
map2.size // 2
map2.set('sex','man')
如果一个键重复设置 后面的会覆盖之前的值
map2.get('sex') // man
可以链式调用
map2.set().set().set().get()
Map对象将 0 -0 +0视为同一个值
map2.set(-0,'0相等');
map2.get(0); // 0相等
map2.get(+0); // 0相等
Map视NaN相等
map2.set(NaN,'相等');
map2.get(Number('xixixi')) // '相等
布尔值true和'true'是两个不同的键,undefined和null也是两个不同的键
map2.has(key);
返回值:布尔值,若存在于Map中,则返回true
移除 Map 对象中指定的元素。
map2.delete(key);
返回值:布尔值,若为true,则删除成功
map2.clear()
清除所有成员,没有返回值
返回键名的遍历器
map2.keys()
for(let key of map2.keys()){
console.log(key)
}
返回键值的遍历器
map2.values()
for(let value of map2.values()){
console.log(value)
}
返回所有成员的遍历器
map2.entries()
for(let item of map2.entries()){
console.log(item)
}
// 返回结构如 ['aa',11]
map2.forEach(callback[, thisArg])
thisArg:this,可选
var map = new Map()
.set('aa',11)
.set('bb',22)
map.forEach(function (value,key,mymap){
console.log(value,key,mymap)
})
// 11 "aa" {"aa" => 11, "bb" => 22}
// 22 "bb" {"aa" => 11, "bb" => 22
map转数组
var map = new Map()
.set('aa',11)
.set('bb',22)
.set('cc',33)
[...map] // [ ['aa',11],['bb',22],['cc',33] ]
[...map.keys()] // ["aa", "bb", "cc"]
[...map.values()] // [11, 22, 33]
[...map.entries()] // [ ['aa',11],['bb',22],['cc',33] ]