基本用法
ES6新增一个数据结构——Set。
它类似于数组,但是成员的值都是唯一的,没有重复。
Set本身是一个构造函数,用来生成Set数据结构。
Set函数可以接受一个数组(或具有iterable接口的其他数据结构)作为参数,用来初始化。
向Set加入值时不会发生类型转换,Set内部两个值是否相等使用的算法类似于精确相等符(===)。
在Set内部两个NaN是相等的,另外两个对象是不相等的。
Set实例的属性和方法
- 属性
Set.prototype.constructor:构造函数,默认就是Set函数
Set.prototype.size:返回Set实例的成员总数
2.方法
add(value):添加某个值,返回Set结构本身
delete(value):删除某个值,返回一个布尔值表示是否删除成功
has(value):返回一个布尔值,表示参数是否为Set的成员
clear():清除所有成员,没有返回值
遍历操作
四个遍历方法:
keys():返回键名的遍历器
?values():返回键值的遍历器
?entries():返回键值对的遍历器
?forEach():使用回调函数遍历每个成员
由于Set结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法行为完全一致。
Set结构的实例默认可遍历,其默认遍历器生成函数就是它的values方法。因此可用for ... of 直接遍历Set。
forEach():
?Set结构实例的forEach方法用于对每个成员执行某种操作,没有返回值。
遍历的应用
- 扩展运算符,for...of循环用于Set结构
?扩展运算符(...)内部使用for...of循环,也可以用于Set结构。
2.数组的map和filter方法也可以用于Set结构
3.使用Set可以很容易地实现并集、交集、差集