• ES6学习笔记(二)


    Set 和 Map 数据结构

    1.set

    基本用法

    ES6提供了新的数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值

    Set本身是一个构造函数,用来生成Set数据结构

    const s = new Set();
    [2,3,5,4,5,2,2].forEach(x => s.add(x))
    for (let i of s) {
      console.log(i);
    }
    // 2 3 5 4

    上面代码通过add()方法向Set结构加入成员,结果表明Set结构不会添加重复的值

    Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。

    // 例一
    const set = new Set([1, 2, 3, 4, 4]);
    [...set]
    // [1, 2, 3, 4]
    
    // 例二
    const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
    items.size // 5
    
    // 例三
    const set = new Set(document.querySelectorAll('div'));
    set.size // 56
    
    // 类似于
    const set = new Set();
    document
     .querySelectorAll('div')
     .forEach(div => set.add(div));
    set.size // 56

    上面代码中,例1和例2都是Set函数接受数组作为参数,例3是接受类似数组的对象作为参数

    上面代码也展示了一种去除数组重复成员的方法。

    // 去除数组的重复成员
    [...new Set(array)]

    上面的方法也可以用于,去除字符串里面的重复字符。

    [...new Set('ababbc')].join('')
    // "abc"

    向 Set 加入值的时候,不会发生类型转换,所以5"5"是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(===),主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身。

    let set = new Set();
    let a = NaN;
    let b = NaN;
    set.add(a);
    set.add(b);
    set // Set {NaN}

    上面代码向 Set 实例添加了两个NaN,但是只能加入一个。这表明,在 Set 内部,两个NaN是相等。

    另外,两个对象总是不相等的。

    let set = new Set();
    
    set.add({});
    set.size // 1
    
    set.add({});
    set.size // 2

    上面代码表示,由于两个空对象不相等,所以它们被视为两个值。

    Array.from方法可以将 Set 结构转为数组。

    const items = new Set([1, 2, 3, 4, 5]);
    const array = Array.from(items);

    这就提供了去除数组重复成员的另一种方法。

    function dedupe(array) {
      return Array.from(new Set(array));
    }
    
    dedupe([1, 1, 2, 3]) // [1, 2, 3]
  • 相关阅读:
    音乐播放器
    滚动视图、定时器、分页控件的综合使用
    简易拼图
    IOS开发复习笔记(1)-OC基础知识
    64位matlab mex64位编译器解决方案
    LibSvm添加到Matlab
    code first 数据库无损迁移
    asp.net mvc4连接mysql
    自定义控件引用时候尺寸发生变化
    jquery 操作动态添加的元素
  • 原文地址:https://www.cnblogs.com/woshidouzia/p/11009945.html
Copyright © 2020-2023  润新知