• JS 数据结构-Set 集合 创建Set 常用Set方法


    Set

      ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

      很多时候我们把Set叫做 集合,但是,Set可以是集合,集合不一定是Set。

      特性:唯一性=>不重复=>能够对数据进行去重操作。

    注:集合去重,是全等匹配,===。

    创建Set

      Set 本身是一个构造函数,调用构造函数用来生成 Set 数据结构。

        
        关键词  标识符 = new Set();
      例    let    i   = new Set();
      
      Set 函数可以接受一个数组(或类似数组的对象)作为参数,用来进行数据初始化。

          let i = new Set([1, 2, 3, 4, 4]);  会得到  set{1, 2, 3, 4,}

    注:如果初始化时给的值有重复的,会自动去除。

      集合并没有字面量声明方式。

     

    Set的属性

      常用的属性就一个:size   返回 Set 实例的成员总数。

      let s = new Set([1, 2, 3]);

      console.log( s.size ); // 3

    Set的方法

      Set 实例的方法分为两大类:操作方法(用于数据操作)和遍历方法(用于遍历数据)。

      操作方法:

          add(value)    添加数据,并返回新的 Set 结构

          delete(value)   删除数据,返回一个布尔值,表示是否删除成功

          has(value)    查看是否存在某个数据,返回一个布尔值

          clear()      清除所有数据,没有返回值

    let set = new Set([1, 2, 3, 4, 4]);
    // 添加数据 5
    let addSet = set.add(5);
    console.log(addSet); // Set(5) {1, 2, 3, 4, 5}
    // 删除数据 4s
    let delSet = set.delete(4);
    console.log(delSet); // true
    // 查看是否存在数据 4
    let hasSet = set.has(4);
    console.log(hasSet); // false
    // 清除所有数据
    set.clear();
    console.log(set); // Set(0) {}

      遍历方法:

        Set 提供了三个遍历器生成函数和一个遍历方法。

          keys()     返回一个键名的遍历器

          values()     返回一个键值的遍历器

          entries()     返回一个键值对的遍历器

          forEach()   使用回调函数遍历每个成员

    let color = new Set(["red", "green", "blue"]);
    for(let item of color.keys()){
     console.log(item);
    }
    // red
    // green
    // blue
    for(let item of color.values()){
     console.log(item);
    }
    // red
    // green
    // blue
    for(let item of color.entries()){
     console.log(item);
    }
    // ["red", "red"]
    // ["green", "green"]
    // ["blue", "blue"]
    color.forEach((item) => {
     console.log(item)
    })
    // red
    // green
    // blue

     

    与数组相关操作

      Set 转数组:

        由于扩展运算符...,内部的原理也是使用的 for-of 循环,所以也可以用于操作 Set 结构。

        例如将 Set 结构转换为数组结构:

            

    let color = new Set(["red", "green", "blue"]);
    let colorArr = [...color];

      数组去重:

        扩展运算符和 Set 结构相结合,就可以去除数组的重复成员。

          

    let arr = [1,2,2,2,2,"2",24,5,6];
    //step1:数组转集合
    let set = new Set(arr);//已经去掉重复值,当前不是数组,而集合  Set { 1, 2, '2', 24, 5, 6 }
    //step2:集合转数组
    arr = [...set];//[ 1, 2, '2', 24, 5, 6 ]

    扩展

    let num1 = new Set([1, 2, 3, 4]);
    let num2 = new Set([3, 4, 5, 6]);
    
    //并集
    let union = new Set([...num1,...num2]);
    console.log(union);//Set { 1, 2, 3, 4, 5, 6 }
    
    //交集
    let intersect = new Set(
        [...num1].filter(x=> num2.has(x))
    )
    console.log(intersect); //Set { 3, 4 }
    
    //差集
    let difference = new Set(
        [...num1].filter(x => !num2.has(x))
    )
    console.log(difference); //Set { 1, 2 }
  • 相关阅读:
    LeetCode 面试题56-I
    LeetCode T2
    统计中的AUC和ROC曲线
    【转载】RNN
    One layer SoftMax Classifier, "Handwriting recognition"
    【转载】深度学习中softmax交叉熵损失函数的理解
    【转载】softmax的性质及其实现
    logistics多分类
    logistics二分类
    多元线性回归
  • 原文地址:https://www.cnblogs.com/jiayouba/p/11946517.html
Copyright © 2020-2023  润新知