Map数据集合
Map数据集合
1.ES6提供了Map数据集合,是一种以键值对存在的有序列表
// 创建Map集合
let map=new Map();
map.set('name','Mr.Lee'); //支持添加,支持.set(...).set(...)
map.set('age',100);
console.log(map); // Map(2) { 'name' => 'Mr.Lee', 'age' => 100 }
console.log(map.get('name')); //get获取
2.也可以通过构造函数传递参数的方式初始化集合,比如接受一个数组
// 通过构造函数初始化集合
let map=new Map([
['name','Mr.Lee'],
['age',100]
]);
console.log(map); //Map(2) { 'name' => 'Mr.Lee', 'age' => 100 }
3.使用has()检测、delete()删除、clear()清空等对Map集合的操作
console.log(map.has('name')); //true
console.log(map.size); //2
map.delete('name'); //删除
console.log(map); //Map(1) { 'age' => 100 }
map.clear(); //清空
console.log(map); //Map(0) {}
4.我们可以用forEach来遍历Map集合
let map=new Map([
['name','Mr.Lee'],
['age',100]
]);
map.forEach((value,key,m)=>{
console.log(key+ '-' +value); //name-Mr.Lee
console.log(m); //Map(2) { 'name' => 'Mr.Lee', 'age' => 100 }
})
5.Map集合还提供针对对象的Weak map集合,添加非对象类型会报错
6.Weak Map不支持遍历,内部隐藏(无法查看内容),不支持foreach和size
7.对于应用场景来说,存放对象的弱引用,不用担心对象被回收后引发的问题
// 弱引用
let wm=new WeakMap(),
obj={};
wm.set(obj);
console.log(wm.has(obj)); //true
// 移出引用
obj=null;
console.log(wm.has(obj)); //回收