Set

2022-07-16  本文已影响0人  5cc9c8608284

Set是ES6提供的新的数据结构,类似数组,但组成成员的值都是唯一的,集合实现了iteratot接口,
所以可以使用扩展运算符和for of进行遍历集合的属性和方法
属性:
1.size:返回集合的元素个数
2.add:增加一个新元素,返回当前集合
3.delete:删除元素,返回boolean值
4.has:检测集合中是否包含某个元素,返回boolean值
5.clear:清空集合里面的元素
案例1:集合的基本操作

      //声明一个Set
      let s1 = new Set(["足球", "篮球", "羽毛球", "乒乓球", "足球"]);
      //打印集合
      console.log(s1);//Set(4) {"足球", "篮球", "羽毛球", "乒乓球"} 过滤掉了重复的元素
      //查看集合个数
      console.log(s1.size);//4
      //添加新的元素
      console.log(s1.add('台球'));//Set(5) {"足球", "篮球", "羽毛球", "乒乓球", "台球"}
      //删除元素
      console.log(s1.delete('足球'));//true:删除成功则返回true
      // 检测元素是否存在
      console.log(s1.has('足球'));//false
      //清空集合
      s1.clear()
      console.log(s1);//Set(0) {}:空集合
      
      // Set实现了iterator接口,所以可以使用for ... of进行遍历
      let s2=new Set(['1122','1111','3333']);
      for(let v of s2){
          console.log(v);//1122,1111,3333 打印出了集合里面的元素
      }

案例2:数组去重

   let a1 = [1, 2, 3],
       a2 = [2, 3, 4];
   let s1 = [...new Set(a1.concat(a2))];
   console.log(s1); //[ 1, 2, 3, 4 ]

案例3:求交集

    let arr1=[1,2,3,4,5,6,4,3,2,1];
    let arr2=[4,5,6,5,6];
    let result=[...new Set(arr1)].filter(item=>{
        let a2=new Set(arr2);
        if(a2.has(item)){
            return true
        }else{
            return false
        }
    })
    console.log(result);//[4, 5, 6]
//简写
let result=[...new Set(arr1)].filter(item=>new Set(arr2).has(item));

案例4:求并集

    let arr1=[1,2,3,4,5,6,4,3,2,1];
    let arr2=[4,5,6,5,6];
    //求并集
    let re=[...new Set([...arr1,...arr2])];
    console.log(re);

案例5:求差集

差集是交集的逆运算

    let arr1=[1,2,3,4,5,6,4,3,2,1];
    let arr2=[4,5,6,5,6];
    let diff=[...new Set(arr1)].filter(item=>!(new Set(arr2).has(item)))
    console.log(diff);
上一篇下一篇

猜你喜欢

热点阅读