ES6的新数据结构,Set类似于数组,但其中的数据具有唯一性。
一、创建方式:
1、let mySet = new Set()(通过构造函数创建)
2、let mySet = new Set(array)(通过接收数组、伪数组参数创建)
3、let mySet = new Set('daisanlang')(通过接收字符串参数创建)
4、待补充……
注:在Set中NaN只有一个,即在Set中 NaN=NaN,但在JS中 NaN===NaN = false。
二、主要API:
1、mySet.size——返回Set中的成员个数
2、mySet.add()——向Set中添加某个元素,返回Set结构本身
3、mySet.delete()——在Set中删除某个元素,返回一个布尔值。
4、mySet.has()——判断Set中是否包含某个元素,返回一个布尔值。
5、mySet.clear()——清空Set,无返回值
6、mySet.key()——返回键名的遍历器
7、mySet.values()——返回键值的遍历器
8、mySet.entries()——返回键值对的遍历器
6、mySet.forEach()——遍历每个成员
三、遍历
1、for( let item of mySet.keys() ){ console.log(item)}
2、for( let item of mySet.values() ){ console.log(item)}
3、for( let item of mySet.entries() ){ console.log(item)}
4、mySet.forEach( ( value , key ) => console.log( key + ' : ' + value ))
注:由于Set数据只有键值没有键名,所以其key和value是相同的。
四、应用:
1、数组去重:
①、let newArr = [...new Set(array)](扩展运算符可以将Set转换为数组)
②、let newArr = Array.from(new Set(array))(from可以将拥有 length 属性的对象或可迭代的对象转换为数组,不改变原数据)
2、数组并集:
①、let mySet = new Set([...array1,...array2])
3、数组交集
①、let mySet = new Set(array1.filter( item => { return !new Set(array2).has(item)}))
4、字符串去重
①、let newStr = [...new Set(str)].join('')
文中的错误和不足欢迎各位道友指正和补充,另外下方是阮一峰老师详解Set的文章链接。