• ES6中的set、map


    ES6中的set、map

    set

    • set类似于数组,但是它的值都是唯一的。
    • set可以接受一个数组或者具有interable接口的数据作为参数。
    • 向set数据加入NaN时,会被认为是同一个数据,虽然NaN是自己不等于自己的但是在set中是默认相等的。
    set的某些属性和操作方法
    const newSet = new set([1,'d']);
    //set的属性 
    newSet.size() //1 相当于数组的长度length
    //set的数组操作方法
    newSet.add(2) // 往set中添加数组 类似数组的push,因为add()之后会返回newSet所以可以进行链式调用
    newSet.add(5).add(6);
    newSet.delete(1) // 删除方法 返回布尔值代表是否删除成功
    newSet.has(1) //判断set数据中是否包含某值 返回布尔值代表是否包含
    newSet.clear() //清除数据 无返回值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    set的循环

    有四种循环
    Set.prototype.keys():返回键名的遍历器
    Set.prototype.values():返回键值的遍历器
    Set.prototype.entries():返回键值对的遍历器
    Set.prototype.forEach():使用回调函数遍历每个成员
    和object的方法有点类似,keys方法、values方法、entries方法返回的都是遍历器对象。由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。

    let set = new Set(['red', 'green', 'blue']);
    
    for (let item of set.keys()) {
      console.log(item);
    }
    // red
    // green
    // blue
    
    for (let item of set.values()) {
      console.log(item);
    }
    // red
    // green
    // blue
    
    for (let item of set.entries()) {
      console.log(item);
    }
    // ["red", "red"]
    // ["green", "green"]
    // ["blue", "blue"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    Map

    键值对的集合,事实上,不仅仅是数组,任何具有 Iterator 接口、且每个成员都是一个双元素的数组的数据结构,都可以当作Map构造函数的参数。这就是说,Set和Map都可以用来生成新的 Map。
    如果对同一个键进行赋值,后面的值会覆盖前面的值。

    const set = new Set([
      ['foo', 1],
      ['bar', 2]
    ]);
    const m1 = new Map(set);
    m1.get('foo') // 1
    
    const m2 = new Map([['baz', 3]]);
    const m3 = new Map(m2);
    m3.get('baz') // 3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    map的一些属性和方法

    const map = new Map();
    map.set('foo', true);// 通过set设置值,同样是支持链式调用的
    map.size() // 能查看长度
    map.clear()// 清除 无返回值
    map.get('foo') // 查看值 返回查询到的值
    map.has('foo') // 是否包含某个值 返回布尔值
    map.delete('foo') // 删除 返回布尔值是否删除成功
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    map的循环

    Map.prototype.keys():返回键名的遍历器。
    Map.prototype.values():返回键值的遍历器。
    Map.prototype.entries():返回所有成员的遍历器。
    Map.prototype.forEach():遍历 Map 的所有成员。

    const map = new Map([
      ['F', 'no'],
      ['T',  'yes'],
    ]);
    
    for (let key of map.keys()) {
      console.log(key);
    }
    // "F"
    // "T"
    
    for (let value of map.values()) {
      console.log(value);
    }
    // "no"
    // "yes"
    
    for (let item of map.entries()) {
      console.log(item[0], item[1]);
    }
    // "F" "no"
    // "T" "yes"
    
    // 或者
    for (let [key, value] of map.entries()) {
      console.log(key, value);
    }
    // "F" "no"
    // "T" "yes"
    
    // 等同于使用map.entries()
    for (let [key, value] of map) {
      console.log(key, value);
    }
    // "F" "no"
    // "T" "yes"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    还有其它强大功能 如map和json和数组相互转换等可以参考下面文档
    参考文档

  • 相关阅读:
    计算机毕业设计(附源码)python在线电影推荐系统
    TCP 面向字节流、延迟应答、异常情况
    2023五一杯数学建模竞赛ABC题思路解析+代码+论文
    #AngularJS#简介
    codeforces:E. MEX and Increments【贪心 + 略加优化】
    CUDA核函数,如何设置grid和block即不超过大小又能够遍历整个volume
    福伦王梅花代工爱马仕新款自行车售价16.5万售罄,交不了货?
    Linux云主机安全入侵排查步骤
    npm最新淘宝镜像站已经更新registry(2024-04-19)
    Ubuntu中安装mysql
  • 原文地址:https://blog.csdn.net/qq_47915690/article/details/126599630