ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进
行遍历,集合的属性和方法:

  • size 返回集合的元素个数
  • add 增加一个新元素,返回当前集合
  • delete 删除元素,返回 boolean 值
  • has 检测集合中是否包含某个元素,返回 boolean 值
  • clear 清空集合,返回 undefined

Set本质上也是一个对象。就和Date等一样,可以通过New Set()来实例化类

  1. let s = new Set();
  2. let s2 = new Set(['大事儿','小事儿','好事儿','坏事儿','小事儿']);

new Set()接收可迭代的参数,即具备 iterator 接口的数据

  • Array
  • Arguments
  • Set
  • Map
  • String
  • TypedArray -概念
  • NodeList

image.png

实践

 let arr = [1,2,3,4,5,4,3,2,1];
  //1. 数组去重
  let result = [...new Set(arr)];
  console.log(result);

  //2. 交集
  let arr2 = [4,5,6,5,6];
  let result = [...new Set(arr)].filter(item => {
    let s2 = new Set(arr2);// 4 5 6
    if(s2.has(item)){
      return true;
    }else{
      return false;
    }
  });
  let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));
  // console.log(result);

  //3. 并集
  let union = [...new Set([...arr, ...arr2])];
  console.log(union);

  //4. 差集,arr和arr2的差集是1,2,3   arr2和arr的差集是6
  let diff = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)));
  console.log(diff);