Bootstrap

web前端—前端三剑客之JS-ES6(5):Set、WeakSet(二)

目录

set的应用场景

Set函数去重

Set与数组的转换

WeakSet

WeakSet的方法


set的应用场景

1、实现并集(Union)、交集(Intersect)和差集(Difference)

2、遍历隐射形成新的数组

 如果想在遍历操作中,同步改变原来的 Set 结构,目前没有直接的方法,但有两种变通方法

一种是利用原 Set 结构映射出一个新的结构,然后赋值给原来的 Set 结构;

一种是利用Array.from方法

3、去重:见下

Set函数去重

Set中的数据都具有唯一不重复,所以可以用来做数据的去重

数组去重

        let arr2 = [1,2,3,4,2,1,6,8,0,6];   
        let newarr2 = [...new Set(arr2)];     // 去除数组中重复内容的方法
        console.log(newarr2);

字符串去重

        let str = 'liuhaha,liuhaihai';
        let newstr = [...new Set(str)].join('');    // 去除字符串中重复字符的方法
        console.log(newstr);

Set与数组的转换

  • 数组转换为Set:使用创建Set的方法
  • Set转换为数组:使用Array.from方法
        let arr1 = [1,2,3,4,2,1,6,8,0,6];
        let set2 = new Set(arr1);

        let newset = Array.from(set2);
        console.log(newset);    // 将set结构的数据转换为数组对象

WeakSet

WeakSet结构与 Set 类似,也是不重复的值的集合。但与 Set 有区别

  • WeakSet 的成员只能是对象,而不能是其他类型的值。
  • WeakSet 中的对象都是弱引用,垃圾回收机制不考虑 WeakSet 对该对象的引用(如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中)。
  • WeakSet 不能遍历

WeakSet 的用处(防止内存泄漏):可以用来储存 DOM 节点,而不用担心这些节点从文档移除时,会引发内存泄漏。

WeakSet的方法

  • add(value):向 WeakSet 实例添加一个新成员。
  • delete(value):清除 WeakSet 实例的指定成员。
  • has(value):返回一个布尔值。
;