ES6中set和weakSet

 一、set

1、定义:set是一种数据结构,类似于数组,但成员的值都是唯一的。

2、去除数组的重复成员:[...new set(array)]。

3、set实例的属性和方法

        3.1、set.prototype.size 总数

        3.2、set.prototype.add(value) 添加值,返回set本身

        3.3、set.prototype.delete(value) 删除值,返回布尔值,表示删除是够成功

        3.4、set.prototype.has(value) 返回布尔值,表示该值是否是set成员

        3.5、set.prototype.clear() 清除所有成员,无返回值

4、Array.from方法可以将set结构转化为数组

       例:const items = new Set([1,2,3,4,5])

        const array = Array.from(items)

5、遍历

Set.prototype.keys()          //返回键名的遍历器
Set.prototype.values()        //返回键值的遍历器
Set.prototype.entries()       //返回键值对的遍历器
  //举例如下
   let setData = new Set([1,2,3,5,8])
  //该方法返回的值为
   [1,1] [2,2] [3,3] [5,5] [8,8]
Set.prototype.forEach()        //使用回调函数遍历每个成员

注:set查找某个值是否存在的时间复杂度为o(1)

       数组的indexof方法的时间复杂度为o(n)

二、weakSet

  1、weakset和set的异同点

        相同点:weakSet和set结构类似,都是不重复的值的集合

        不同点:1 )weakSet的成员只能是对象

                      2 )weakSet中的对象都是弱引用

        注:set是强引用,weakSet是弱引用

强引用:如果一个对象具有强引用,那么垃圾回收机制绝不会回收它,当内存不足时,java虚拟机宁愿抛出outOfMemoryError错误,使程序异常终止。

//不会被回收
let obj = {};
let a = new Set();
a.add(obj);

//弱化从而使GC可以回收
obj = null;

弱引用:垃圾回收机制不考虑weakSet对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收对象所占用的内存,不考虑对象还存在于weakSet中。

注:weakSet没有size属性,也没有clear方法,也不能遍历,因为成员都是弱引用,随时可能消失。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值