• es6--(三)set和map数据结构


    1.Set和WeakSet

     Set与数组相似,但是Set结构的成员必须是唯一的.

    WeakSet与对象类型,但是WeakSet结构的成员只能是对象

    Set结构的实例属性和方法

      属性:

        Set.prototype.constructor:构造函数

        Set.prototype.size:返回Set实例的成员总数

      方法:

        --add(value):添加值,返回Set结构本身

        --delete(value):删除某个值,返回一个布尔值

        --has(value):返回一个布尔值,判断该值是否为Set的成员

        --clear:清除所有成员,没有返回值

    Set结构遍历方法:

      --keys:返回键对的遍历器

      --values:返回键值的遍历器

      --entries:返回键值对的遍历器

      --forEach:使用回调遍历每个成员

     1 //声明一个Set类型(一)
     2 var set = new Set([1,2,3,4,2,8,4]);
     3 //声明一个Set类型(二)
     4 var set = new Set();
     5 for(let i =0;i<5;i++){
     6     set.add(i);   
     7 }
     8 for(let elem of set){
     9     console.log(elem);  // 1,2,3,4,8
    10 }

    扩展运算符 (...),转成数组

    var set = new Set();
    [1,2,4,8,3,4].map(function(elem){
          set.add(elem);
    });
    console.log("set = "+set); //set = [object Set]
    //扩展运算,将setL类型变成数组类型
    var arr = [...set];
    console.log("arr = " +arr);//arr = 1,2,4,8,3        

    删除和清空

    var set = new Set();
    [1,2,4,8,3,4].map(function(elem){
          set.add(elem);
    });
    console.log("set = "+set); //set = [object Set]
    set.delete(2); //删除2 arr = 1,4,8,3
    set.clear();  //清空   arr=
    //扩展运算,将setL类型变成数组类型
    var arr = [...set];
    console.log("arr = " +arr);//arr = 1,2,4,8,3 

    遍历键值

    var set = new Set();
    [1,2,4,8,3,4].map(function(elem){
         set.add(elem);
    });
    //键和值是相同的
    set.forEach(function(value,key){
       console.log(key + " = " + value);//1=1,2=2,3=3,4=4,8=8
    });

     WeakSet方法:

      --add(value):添加 一个成员

      --delete(value):清楚指定成员

      --has(value):返回一个boolean,判断某个值是否存在

     WeakSet的对象都是弱应用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说如果其他的对象都不再引用该对象,该对象就会被回收机制收回。因此,WeakSet是不可遍历的,因为成员很可能在遍历之后被回收了,消失了,成员就取不到了。

     

    2.Map和WeakMap 

      

  • 相关阅读:
    Bitnami Redmine安装和插件配置
    DataTable转换成List<T>
    学习Javascript闭包(Closure)
    单例模式(Singleton)
    哈希表--HashSet<T>
    .NET 4.0中的泛型的协变和逆变
    vue-cli脚手架里如何配置屏幕自适应
    新手如何理解JS面向对象开发?
    vue轮播图插件vue-awesome-swiper的使用与组件化
    vue中sass的配置安装流程
  • 原文地址:https://www.cnblogs.com/thonrt/p/6227246.html
Copyright © 2020-2023  润新知