1、Set 是es6提出的一种数据解构,类似于数组,但是与数组有一个很大的区别:Set中的数据是没有重复的,也就是说所有的值都是唯一的。
针对这一特性可以用set对数组进行去重。如:
const s = new Set(); [2, 3, 5, 4, 5, 2, 2,8].forEach(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4 8
let arr = Array.from(new Set([1,2,4,6,3,6,3,7,4])); for(let i=0;i<arr.length;i++){ console.log(i); // 1 2 4 6 3 7
Set去重是采用 ===(全等) 方式进行判断的,不存在类型转换 也就是说1与'1'是不同的。在es6入门(三)点击打开链接 中介绍过,NaN是一种特殊的数字类型,自身都不相等。但是在es6的Set中NaN是与自身相等的。也就是说向Set中可以有重复的NaN出现,对象也是一样。
let set = new Set(); set.add(1); set.size;//1 set.add('1'); set.size;//2 set.add(NaN); set.size;//3 set.add(NaN); set.size;//3 set.add({}); set.size;//4 set.add({}) set.size;//5
2、Set方法的介绍:(a):操作方法:add()、has()、delete()、clear()
let s = new Set(); s.add(1).add(3).add(2); // 注意2被加入了两次 s.size // 3 s.has(1) // true s.has(2) // true s.has(3) // true s.delete(2); s.has(2) //false
(b)遍历方法:键名:keys()、键值:values()、键值对entries()、遍历所有成员foreach()
在Set数据解构中,只存在键值,不存在键名,也可以理解为键值和键名