类似数组,与map相似,但是成员的值唯一,没有重复的值。
//阮一峰老师写的一个使用方式:
const s=newSet();
[2,3,5,4,5,2,2].forEach(x=>s.add(x));
for(leti of s){console.log(i);} // 2 3 5 4
上面通过add()增加元素到set中,可以去除重复的元素。很多例子前往http://es6.ruanyifeng.com/#docs/set-map详细查看
注意:
1、set可以加入数组参数,也可以加入类似数组的参数
2、向set里面加入参数,是不会发生类型转化。(3和“3”是不同的,不算重复元素)
3、值得注意的是NaN ,set里面的判断类似全等(我用JS高级程序中称呼 ===为全等,称呼==为相等)===中NaN不等于自身,而set中的NaN等于自身
例子:
4、对象总是不相等,加入两个新对象{}尝试下
几个基础的操作方法:
5、两种去除数组重复的方法
原理一样,用Set去掉重复元素再变回数组
6、 遍历操作
keys(),values(),entries(),forEach()
前三种都是遍历器对象,Set只存在键值或者说是键值和键名一致,所以keys()和values()用法一致,entries()中键值键名一致
当然从阮老师那边学到,set默认的遍历和values是一致的,所以可以直接用for...of循环遍历 Set,这里不多讲了,可以参考阮老师的讲解
forEach()就不多讲解,两个例子,最上面一个,这边一个,都来自阮一峰ES6入门
set=newSet([1,4,9]);
set.forEach((value,key)=>console.log(key+' : '+value))
// 1 : 1
// 4 : 4
// 9 : 9