zoukankan      html  css  js  c++  java
  • ES6之Set

    阮大神的es6看了一遍,但是对于Set和Map还是一知半解的,主要还是没怎么用吧,这里总结一下,以后再工作中也要多用用才行

    怎么定义set呢?有什么用处?

    set是ES6中新增的类型,和数组类似,唯一不同在于该类型不会有重复的数据,一般常用来对数据进行去重操作。

    //创建实例
    let set = new Set()          //{}
    let set = new Set([1,2,3])       //{1,2,3}

    //相关方法
    set.has(1) //判断元素是否存在
    set.add('1') //添加元素
    set.delete(1) //删除元素
    set.clear() //清除元素

    知道了怎么定义,怎么创建实例,但是set这个数据结构怎么用来去重的?来看一看

    //数组去重
    let set = new Set([1,2,2,3,3])
    console.log(set)         //{1,2,3}
    
    //多数组合并去重
    let arr1 = [1,2,66,5,3]
    let arr2 = [1,56,5,4]
    let set = new dSet([...arr1,...arr2])
    console.log(set)      //{1,2,66,5,3,56,4}

    想必大家都注意到啦,我们去重后的数据结构不是用[]括起来的数组啊,所以来看一下怎么实现Set和Array之间的转换

    说道Array转Set,上面的实例不就是将数组转成了Set嘛

    那么Set转Array呢,怎么实现? 其实很简单,有两种方式

    //使用拓展运算符
    let set = new Set([1,2,3])
    console.log([...set])     // [1,2,3]

    //使用Array.from()
    console.log(Array.from(set)) // [1,2,3

    Set类型的数据,也可以像数组一样做 循环遍历

    可以使用Set实例对象的keys(),values(),entries()方法进行遍历。

    由于Set的键名和键值是同一个值,它的每一个元素的key和value是相同的,所有keys()和values()的返回值是相同的,entries()返回的元素中的key和value是相同的。

    这里引用一位道友的代码  ES6,新增数据结构Set的用法

    let set5 = new Set([4, 5, 'hello'])
    console.log('iterate useing Set.keys()')
    for(let item of set5.keys()) {
      console.log(item)    //4 5 hello
    }
    
    console.log('iterate useing Set.values()')
    for(let item of set5.values()) {
      console.log(item)   //4 5 hello
    }
    
    console.log('iterate useing Set.entries()')
    for(let item of set5.entries()) {
      console.log(item)    //[4,4] [5,5] ['hello' 'hello']
    }

    end

  • 相关阅读:
    二项分布 正太分布 关系 隶莫佛-拉普拉斯定理的推广 列维-林德伯格定理
    lint (software)
    eslint
    Lazy freeing of keys 对数据的额异步 同步操作 Redis 4.0 微信小程序
    XML-RPC JSON-RPC RPC是实现思路
    Multitier architecture
    Messaging Patterns for Event-Driven Microservices
    替换模板视频图片的原理
    Understanding When to use RabbitMQ or Apache Kafka Kafka RabbitMQ 性能对比
    RabbitMQ Connector
  • 原文地址:https://www.cnblogs.com/linhongjie/p/11649632.html
Copyright © 2011-2022 走看看