Set集合

Set集合是一种无重复元素的列表,通常是用来检验给定是值是否在集合中存在。

创建Set集合

  • 可以通过new Set来创建Set集合,并调用add()方法添加元素,size可以获取集合中目前的元素数量
  • 由以下代码可以,5并没有和 '5' 发生冲突,说明Set集合是不会对元素进行强制类型转换(注意:+0和-0在Set集合里会被认为相同)
    let set = new Set();
    set.add(5);
    set.add('5');
    console.log(set.size);        //2
    console.log(set);             //{5,'5'}

Set集合的方法

  • add():方法添加元素     
  • size: 获取集合中目前的元素数量
  • has: 检测集合中是否存在某个值    set.has('5');     //true
  • delete() :移除Set集合中的某一个元素    set.delete('5');
  • clear(): 移除集合中的所有元素
  • forEach(): 回调函数接受3个参数,值,键名和集合本身(Set集合的键名和值是一样的,而数组键名是数值索引)
     set.forEach(function(value, key, ownerSet) {
       console.log(key + ':' + value);
       console.log(ownerSet === set);
     })
  • 将Set集合转化为数组:重复的项(后面出现的)会被Set集合过滤掉
      let set = new Set([1,2,3,4,4,5,2]);
      let array = [...set];
      console.log(array);                    //[1, 2, 3, 4, 5]

创建WeakSet集合

  • 为什么要WeakSet? 

因为Set集合会保留对清除对象的引用,造成内存泄漏。

      let set = new Set(),
      key = '5';
      set.add(key);
      key = null;
      set.delete(key);
      console.log(set);            //{'5'}依旧保持对原来对象的引用,没有被清除

WeakSet集合的方法

  • 支持3种方法,且和Set集合类似:add(),has(),delete()
     let set = new WeakSet();
     let key = {};
     set.add(key);
     console.log(set.has(key));
     set.delete(key);
     console.log(set);

WeakSet与Set的不同之处

  • 只保存对象值得弱引用,就是只有该对象对其引用了,而没有别的对其引用(就不会被标记),就会被垃圾回收机制回收
  • add()方法传入非对象参数会导致程序报错,而has()和delete()方法传入非对象参数会返回false。
  • 不可被迭代,不能使用for-of,也不支持forEach
  • 不支持size属性

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值