zoukankan      html  css  js  c++  java
  • JS 数据结构-Set 集合 创建Set 常用Set方法

    转自:https://www.cnblogs.com/jiayouba/p/11946517.html

    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 }
    复制代码
  • 相关阅读:
    C++中整型变量的存储大小和范围
    A1038 Recover the Smallest Number (30 分)
    A1067 Sort with Swap(0, i) (25 分)
    A1037 Magic Coupon (25 分)
    A1033 To Fill or Not to Fill (25 分)
    A1070 Mooncake (25 分)
    js 获取控件
    C#代码对SQL数据库添加表或者视图
    JS 动态操作表格
    jQuery取得下拉框选择的文本与值
  • 原文地址:https://www.cnblogs.com/RealWorld/p/13895759.html
Copyright © 2011-2022 走看看