美文网首页js css html
Set函数的使用

Set函数的使用

作者: 扶得一人醉如苏沐晨 | 来源:发表于2023-03-01 09:12 被阅读0次

    一、set集合及方法

    1.1、它是一种数据结构
    1.2、类似于数组,但成员的值都是唯一的
    1.3、实现了迭代器接口,可以使用扩展运算符和for ...of遍历

    二、属性和方法:

    2.1、size:返回集合的元素个数
    2.2、add:增加一个新元素,返回当前集合
    2.3、delete:删除元素,返回一个boolean值
    2.4、has:检查集合中是否包含某元素,返回boolean值

    注意:

    上面说到其中值是唯一的,如果在new一个集合实例时,集合中有重复的值,它会自动去重,new 一个集合对象时,需要传入一个数组,因此常用来将数组转化为集合
    使用扩展运算符和集合,灵活地对数组进行操作

    三、声明一个set

    3.1、传入一个对象数组

    const set = new Set([{ id: 0, num: 1 }, { id: 1, num: 2 }])
          console.log(set);
    

    打印值

    image.png

    3.2、传入一个基本类型的数组

    注意

    3.2.1

    向Set加入值的时候,不会发生类型转换,所以 0 和 "0" 是两个不同得值,它类似于运算符( === ),

    3.2.2

    上面说到key是唯一的,所以在new一个集合实例时,如果有重复的值,会自动去重;

          const set = new Set([0, '0', 1, 2, 2])
          console.log(set);
          console.log(set.size);
    

    打印值

    image.png

    3.3、传入一个字符串

          const set = new Set('abcdd')
          console.log(set);
          console.log(set.size);
    

    打印值

    image.png

    四、常用

    4.1、基本数据类型数组去重

          let arr = [0, 0, 1, 2, 2]
          console.log([...new Set(arr)]); //[0,1,2]
    

    4.2、对象数组去重

    let arr = [{ id: 0, num: 1 }, { id: 1, num: 2 }, { id: 1, num: 2 }]
          // 将数组中的每一条对象都变成字符串
          arr = arr.map((item) => JSON.stringify(item))
          // 去重
          arr = [...new Set(arr)]
          arr = arr.map((item) => JSON.parse(item))
          console.log(arr);
    
    image.png

    4.3、求两个数组的交集

    const arr = [1, 3, 5, 2, 3, 8, 4, 3];
          const arr2 = [2, 5, 3, 7];
          let res = [...new Set(arr)].filter(item => new Set(arr2).has(item));
          console.log(res); //  [3, 5, 2]
    

    4.4、求两个数组的并集

    const arr = [1, 3, 5, 2, 3, 8, 4, 3];
          const arr2 = [2, 5, 3, 7];
          let union = [...new Set([...arr, ...arr2])];
          console.log(union); //[1, 3, 5, 2, 8, 4, 7]
    

    4.5、求两个数组的差集

    const arr = [1, 3, 5, 2, 3, 8, 4, 3];
          const arr2 = [2, 5, 3, 7];
          let sub = [...new Set(arr)].filter(item => !new Set(arr2).has(item));//注意,比交集加了一个感叹号,表示取反
          console.log(sub); // [1, 8, 4]
    

    相关文章

      网友评论

        本文标题:Set函数的使用

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