JS中的Map和Set,以及WeakMap和WeakSet

一、Map(映射)的用法

const myMap = new Map();//声明一个map
myMap.set("key","value"); //添加键值对
myMap.delete("key");       //删除key及对应的value值   
const mapLength = myMap.size;       //返回Map的长度
const myValue = myMap.get("key");    //返回key对应的value
const mapIsTrue = myMap.has("key");   //Map中是否存在此key值,返回true/false
for(const ["key","value"] of myMap){    //遍历Map
     console.log(`${key} 指向了对应的 ${value}`);
}     

二、Set(集合)的用法

const mySet = new Set();  //声明一个set
mySet.add("key");     //添加值
mySet.delete("key");       //删除值
const setIsTrue = mySet.has("key");  //检查值是否存在,返回true/false
const setLength = mySet.size;
for(let s of mySet){
   console.log(s);
}

三、JS中Map和Set的底层实现及性质

1、JS中并没有map和set的数据类型,它们的typeof均为object,即对象;
2、Map类似于维护两个数组,Set类似于维护一个数组;
3、数组的底层也是通过对象来实现的(将元素作为标准的对象属性来存储,数字索引为其对用的属性名);
4、Map和Set的键都是唯一的,不能重复。

四、WeakMap和WeakSet

1、weak体现在对元素的引用为“弱”引用上,当除了自身外没有其他引用,则被弱引用的元素会被垃圾回收。
2、其键为对象或(非注册)symbol类型;
2、不可枚举,所以可以用来隐藏细节或者私有属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值