🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### Set本身是一个构造函数,用来生成 Set 数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。 #### 1、初始化方法: ``` // 1、传入数组、字符串(或者具有 iterable 接口的其他数据结构)初始化 const set = new Set([1, 2, 3]) // Set {1, 2, 3} const set2 = new Set('hello') // Set {'h', 'e', 'l', 'o'} // 2、add()方法增加元素 const set2 = new Set() set2.add(1) set2.size // 1 ``` #### 2、向 Set 加入值的时候,不会发生类型转换,所以`5`和`"5"`是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(`===`),主要的区别是`NaN`等于自身,而精确相等运算符认为`NaN`不等于自身。 ``` const set = new Set() // Set结构中NaN === NaN set.add(NaN) // size = 1 set.add(NaN) // size = 1 console.log(NaN === NaN) // false // Set结构中两个空对象不相等 set.add({}) // size = 2 set.add({}) // size = 3 console.log({} === {}) // false ``` #### 3、数组 | 字符串去重 ``` // 数组去重 // 1、...扩展运算符 let arr = [...new Set([1,2,1,3,4])] // [1,2,3,4] // 2、Array.from(Set) 将Set结构转换成数组 let arr2 = Array.from(new Set([1,2,1,3,4])) // [1,2,3,4] // 字符串去重 let str = [...new Set('abbcc')].join('') // abc ```