Map是一组键值对的结构,用于解决以往不能用对象做为键的问题,具有极快的查找速度,函数、对象、基本类型都可以作为键或值。
Map声明方式
使用嵌套数组初始化映射
const m1=new Map([
["key1","val1"],
["key2","val2"],
["key3","val3"]
]);
//使用自定义迭代器初始化映射
const m2=new Map({
[Symbol.iterator]:function*(){
yield ["key1","val1"],
yield ["key2","val2"],
yield ["key3","val3"]
}
});
Map方法
set()方法添加元素
size方法获取数量
has()检测是否存在
get()读取元素
delete()删除元素
clear()清除所有元素
keys() / values() / entries() 返回可遍历的迭代对象
WeaMap
WeakMap 对象是一组键/值对的集
-
键名必须是对象 WeaMap对键名是弱引用的,键值是正常引用
-
垃圾回收不考虑WeaMap的键名,不会改变引用计数器,键在其他地方不被引用时即删除
-
因为WeakMap是弱引用,由于其他地方操作成员可能会不存在,所以不可以进行forEach( )遍历等操作
-
也是因为弱引用,WeaMap 结构没有keys(
),values( ),entries( )等方法和 size 属性 -
当键的外部引用删除时,希望自动删除数据时使用 WeakMap