理解Set

Set本身是一个构造函数,用来生成Set数据结构。
它类似于数组,但里面的成员是唯一的,不重复的。
向Set加入值时,不会发生类型转换,它类似于精确相等运算符(===),主要的区别是向 Set 加入值时认为NaN等于自身,而精确相等运算符认为NaN不等于自身。
Set 可以接收一个数组做为参数,用来初始化

1.用法
数组去重

    function noRepeat(arr) {
      return Array.from(new Set(arr))
      // return [...new Set(arr)]
    }
    var oldArr = [1, 4, 2, '2', 4, 'sun', 'moon'];
    console.log(noRepeat(oldArr)) 
    //  [1, 4, 2, '2', 'sun', 'moon']

字符串去重

[...new Set('sssuuunnn')].join('')   // join  ['s', 'u', 'n'] => sun

2.set实例的属性和方法
属性
size: size属性表示set集合中有多少个元素

new Set([1, 2]).size  // 2

方法

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

delete(value):删除某个值,返回一个布尔值表示是否删除成功

has(value):返回一个布尔值,表示参数是否为Set的成员

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

3.Set的遍历方法
keys():返回键名的遍历器
values():返回键值的遍历器
entries():返回键值对的遍历器
for…of…

    let setArr = new Set([1, 6, 6, 'sun', {name: 'sun'}])
    for(let item of setArr.keys()) {
      console.log(item);
       // 1 6 sun {name: 'sun'}
    }
    for(let item of setArr.values()) {
      console.log(item);
      // 1 6 sun {name: 'sun'}
    }
    for(let item of setArr.entries()) {
      console.log(item);
      // [1, 1] [6, 6] [sun, sun] [{name: 'sun'}, {name: 'sun'}] 
    }
    for(let item of setArr) {
      console.log(item);
       // 1 6 sun {name: 'sun'}
    }
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐