ES6-Set篇

作者: 凛冬已至_123 | 来源:发表于2019-08-16 16:20 被阅读0次

    Set-ES6提供的一种新的数据结构

    Set是一个构造函数,类似于Array; 但是 set 结构只能通过new Set来创建

    特性

    1.Set数据结构类似于数组,但是成员的值唯一。
    2.由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值,key 和 value都是同一个值

    const s = new Set();
    
    [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
    console.log([...s])//[2,3,5,4]
    
    set结构
    • 用途
      1.数组/字符串去重
      Set函数可以接受一个数组或者类数组对象作为参数,用来初始化,...扩展运算符可以将set结构变成数组
    //数组去重
    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
    
    //字符串去重
    [...new Set('ababbc')].join('')
    // "abc"
    

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

    • 属性
      1.Set.prototype.constructor: 构造函数,默认就是Set函数
      2.Set.prototype.size/Set.size: 返回Set实例的总数
    • 操作方法
      1.Set.prototype.add(value): 添加某个值,返回 Set 结构本身。
      2.Set.prototype.delete(value): 删除某个值,返回一个布尔值,表示删除是否成功。
      3.Set.prototype.has(value): 返回一个布尔值,表示该值是否为Set的成员.
      4.Set.prototype.clear(): 清除所有成员,没有返回值。
    s.add(1).add(2).add(2);
    // 注意2被加入了两次
    
    s.size // 2
    
    s.has(1) // true
    s.has(2) // true
    s.has(3) // false
    
    s.delete(2);
    s.has(2) // false
    
    • 遍历方法
      1.Set.prototype.keys(): 返回键名的遍历器
      2.Set.prototype.values(): 返回键值的遍历器
      3.Set.prototype.entries(): 返回键值对的遍历器
      4.Set.prototype.forEach(): 使用回调函数遍历每个成员
    let set = new Set(['red', 'green', 'blue']);
    
    for (let item of set.keys()) {
      console.log(item);
    }
    // red
    // green
    // blue
    
    for (let item of set.values()) {
      console.log(item);
    }
    // red
    // green
    // blue
    
    for (let item of set.entries()) {
      console.log(item);
    }
    // ["red", "red"]
    // ["green", "green"]
    // ["blue", "blue"]
    
    let set = new Set(['red', 'green', 'blue']);
    
    for (let x of set) {
      console.log(x);
    }
    // red
    // green
    // blue
    
    • Set结构转为数组
      1....扩展运算符
    const s = new Set([1,2,3,4]);
    console.log([...s])//[1, 2, 3, 4]
    

    2.Array.from方法

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

    数组去重

    function dedupe(array) {
      return Array.from(new Set(array));
    }
    
    dedupe([1, 1, 2, 3]) // [1, 2, 3]
    

    相关文章

      网友评论

        本文标题:ES6-Set篇

        本文链接:https://www.haomeiwen.com/subject/btxqsctx.html