Set学习

类似数组,与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、对象总是不相等,加入两个新对象{}尝试下

几个基础的操作方法:

add,has,delete,clear四个操作方法

5、两种去除数组重复的方法


第一种:[...new Set(arr)]


第二种:利用Array.from

原理一样,用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

你可能感兴趣的:(Set学习)