zoukankan      html  css  js  c++  java
  • ECMAScript6 入门 Set 和Map结构

    Set 和 Map 数据结构

    1:Set本身是一个构造函数,用来生成 Set 数据结构
    (它类似于数组,但是成员的值都是唯一的,没有重复的值)
    
    (所以可以用它来对数组去重)[...new Set(array)]
    (去除字符串里面的重复字符)[...new Set('ababbc')].join('')
    
    Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化
    
    向Set加入值的话,不会发生类型转换,并且他的判断原理和 Object.is() 的判断规则是一样
    2:Set 实例的属性和方法 
    
    属性
    {
        Set.prototype.constructor:构造函数,默认就是Set函数。
        Set.prototype.size:返回Set实例的成员总数。
    }
    
    方法
    {
        Set.prototype.add(value):添加某个值,返回 Set 结构本身。
        Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
        Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
        Set.prototype.clear():清除所有成员,没有返回值。
    }
    
    遍历
    {
        Set.prototype.keys():返回键名的遍历器
        Set.prototype.values():返回键值的遍历器
        Set.prototype.entries():返回键值对的遍历器
        Set.prototype.forEach():使用回调函数遍历每个成员
    }
    3:Array.from方法可以将 Set 结构转为数组
    (所以这又是一种对数组去重的方法)
    
    function dedupe(array) {
      return Array.from(new Set(array));
    }
    
    dedupe([1, 1, 2, 3]) // [1, 2, 3]

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    WeakSet

    1:WeakSet 结构与 Set 类似,也是不重复的值的集合
    
    和Set的差别
    {
        1:WeakSet 的成员只能是对象,而不能是其他类型的值
        2:WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用
    }
    
    相同点
    {
        和Set接受的参数一样:可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数
    }
    2:语法使用
    const a = [[1, 2], [3, 4]];
    const ws = new WeakSet(a);
    // WeakSet {[1, 2], [3, 4]}
    
    方法
    {
        WeakSet.prototype.add(value):向 WeakSet 实例添加一个新成员。
        WeakSet.prototype.delete(value):清除 WeakSet 实例的指定成员。
        WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在 WeakSet 实例之中
    }

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Map

    (传统的JavaScript对象,只能采用字符串当做key),而Map突破这个限制,各种类型的值(包括对象)都可以当作键
    
    属性
    {
        1:size属性返回 Map 结构的成员总数
        2:Map.prototype.set(key, value) 更新键值,如果不存在就相当于新增
        3:Map.prototype.get(key) 获取相应的键值
        4:Map.prototype.has(key) 返回该键是否存在
        5:Map.prototype.delete(key) 删除某个键
        6:Map.prototype.clear() 清除所有值
    }

    待续....

    不忘初心,不负梦想
  • 相关阅读:
    卧槽!缓存的问题太多了(雪崩、击穿、穿透…)一个个解决!
    Java 命名规范(非常全面,可以收藏)
    一次接口超时排查,花费了我两个星期。。
    LiveGBS和海康威视
    SQLite文件存储和读取
    Vue页面刷新原理:Cesium刷新机制
    MBtiles格式数据
    gitee:403错误
    uniapp是什么?
    HBuilderx怎么运行代码
  • 原文地址:https://www.cnblogs.com/panrui1994/p/11590547.html
Copyright © 2011-2022 走看看