Set

作者: 5cc9c8608284 | 来源:发表于2022-07-16 23:20 被阅读0次

    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);
    

    相关文章

      网友评论

          本文标题:Set

          本文链接:https://www.haomeiwen.com/subject/fdqrirtx.html