es6-Set、Map

Set

  • 定义 这是一种无重复值的有序列表(若是添加了重复项至关于添加无效,对象除外,由于他们不会被转为字符串类型相同的对象在其中就是两个object,也没有类型转换)。Set容许对它包含的数据进行快速访问,从而增长了一个追踪离散值的更有效方式。
  • 基本操做与方法
    let set = new Set(); // 建立set对象
     set.add(5);   // 添加元素,也能够添加对象
     set.add("5"); // 没有类型转换因此能够添加进去
     console.log(set.size);  // 
     console.log(set.has(5))  // 返回true
     set.delete(5); // 删除指定元素
     set.clear();   //删除全部元素
     // 也能够用数组初始化set对象,一样的会自动忽略相同值
     let set1 = new Set([1, 2, 3, 4, 5, 5, 5, 5]);  
    复制代码
  • forEach() 循环遍历set中元素
    let set = new Set([1, 2, 3]);
     set.forEach(function(vaule, key, ownSet){
         console.log(vaule);    
     });// 第1、二个参数为set对象首元素,第三个参数为set自身
    复制代码
    forEach中回调函数要使用this值时在整个的第二个参数加上this,或者使用箭头函数。
    set.forEach((value) => this.output(value));
    复制代码
  • set对象转换为数组(剩余运算符实现)
    let set = new Set([1, 2, 3]);
     let arr = [...set];
    复制代码
    那么以这种方式咱们多了一种数组去重的办法:
    function deWeight(arr) {
         return [...(new Set(arr))];
     } // 将数组对象转化为set对象存储在转为数组
     let arr = [1, 1, 1, 1, 1, 2];
     console.log(deWeight(arr));
    复制代码
  • weakSet 是set对象的一个弱引用,set方法存入的对象当对象指定在外部指定去除时set对象内部任然会有,weakSet更加像是一个指向性的对象外部去除内部也不会存在 几点区别
    • weakSet各类方法只能传入对象
    • 没有forEach方法

Map

  • 定义 Map更像是一种数据关联,为能够为一个对象设置一个键值一块儿存储到Map对象,而后经过键值去访问到数据,json中键值只能是字符型,但Map键值均可以。
  • 基本操做方法 存入为set、访问为get,都是经过操做键值(键值能够是对象),其余与set对象相同。
    // 定义添加
     let map = new Map();
     map.set(键值,键值对应值);
     // 直接添加
     let map = new Map([["name", "Nicholas"], ["age", 25]]);
    复制代码
  • Map的forEach方法 用法与set对象一致,相对于理解上Map的该方法更能说通三个参数为键值、键值对应值、对象自己。
  • weakMap 与前面所介绍weakSet的各项特色一致。简化了构建私有化对象的问题,这边是书本上看到的一个私有化案例还不是很懂意思,还需琢磨一下。
    let Person = (function() {
         let privateData = new WeakMap();
         function Person(name) {
             privateData.set(this, { name: name });
         }
         Person.prototype.getName = function() {
             return privateData.get(this).name;
         };
         return Person;
         }());
    复制代码
相关文章
相关标签/搜索