• set和 map 数据结构


    set/map数据结构

    创建: 

      var  s=new Set();

    添加成员

      s.add(1)

    遍历

      for of

      s.froEach

    删除

      s.delete()

    判断存在

      s.has()

    清除

      s.clear()

    转为数组

      array.from(set)

    支持 keys. values. entries

      s.keys,  注意和 Object.的区别, set不支持 Object.keys

    特性

      不接受添加重复的值, 所以 set 里面的值都是唯一的

      判断两个值是否相等使用的是类似  === 

      初始化set的时候可以接受一个数组或者一个字符串, 如果接受的是字符串那么会把字符串分解为一个数组, 不接受对象及其他基本类型, (因为都是不可迭代的??)

      set 接受 ... 的方式做扩展

      因为两个对象总是不相等的, 所以 set 会接受两个空对象

      set 的成员可以是任何的数据类型

      set 成员添加的顺序就是遍历出的顺序, 所以 set 是有序的

    用法; 

      数组去重

      真心感觉这个数据结构的没啥用啊,  主要是成员有序加不重复这个特性

    WeakSet

     

    特性

      成员只能是对象

      对象的引用不计入垃圾回收机制

      不可遍历, 因为其成员的数是不固定的, 垃圾回收机制随时可能清空其中的一个成员, 所以不可遍历

      其余相同

    初始化

      可以接受一个数组, 但是数组成员必须是对象

    方法

      delete

      add

      has

    这个东西有啥子用吗, 闷逼脸, 都不可以遍历, 真不知道什么情况下使用. 这个东西是用来监听对象的引用的吗

    Map 数据结构

    特性

    map就是 Object 的一种改进

    map 的键和值可以使任何类型, 但是 Object不行

    map 判断相等也是使用的 === 的加强版本  

    map 的元素是有序的

    map的底层实现可能就是数组, 因为从使用来看, 确实在和数组之间转换比较容易

    初始化  

      可以接受一个二维的数组,  其中数组元素必须有两个元素

      可以接受 set 做初始化数据

    方法

      set, 多次的相同的键会覆盖

      get

      has

      delete

      clear

    遍历

      keys

      values

      entries

      for of, 可以直接拿到 value, 但是 for of 不能遍历 Object的, 为此 es6 新增了 Object.values

      接受  ... 

      可以使用 forEach  

     

    转为数组

      使用 ... 直接转换

      

    weakMap

    weakMap 和 weakSet 的形式差不多, 也是只接受对象, 并且是弱引用, 但是只是键名是弱的, 值还是强的

    特性

      没有遍历方法

    方法

      get

      set

      delete

      has

    用处

      在一个对象上设置依赖其的变量, 一旦变量不被引用, 那么其所依赖的变量都消失

      

  • 相关阅读:
    708. Insert into a Cyclic Sorted List
    24. Swap Nodes in Pairs
    877. Stone Game
    EOJ Monthly 2020.7 A. 打字机(前缀和+思维)
    EOJ Monthly 2020.7 B. 线上考试(排列组合)
    【JavaScript】Generator
    【JavaScript】Promise
    【JavaScript】throw 和 try...catch
    【JavaScript】JSON
    【JavaScript】WeakSet
  • 原文地址:https://www.cnblogs.com/cgdx/p/10756455.html
Copyright © 2020-2023  润新知