Set
基本用法
Set 类似于数组,但是成员的值都是唯一的,没有重复。Set 本身是一个构造函数。
1 | const set = new Set() |
在 Set 内部,NaN 是相等的,两个对象总是不相等的。
1 | let set = new Set() |
Set 实例的属性和方法
Set 结构的实例有以下属性:
- Set.prototype.constructor:构造函数,默认是 Set 函数
- Set.prototype.size:返回 Set 成员的总数
Set 实例的方法:
- add(value):添加某个值,返回 Set 结构本身
- delete(value):删除某个值,返回布尔值表示是否删除成功
- has(value):返回一个布尔值,表示参数是否为 Set 的成员
- clear():清除所有成员,没有返回值
Array.from 方法可以将 Set 转为数组:
1 | const item = new Set([1, 2, 3, 4]) |
遍历操作
- keys():返回键名的遍历器
- values():返回键值的遍历器
- entries():返回键值对的遍历器
- forEach():使用回调函数遍历每个成员
Set 的遍历顺序就是插入顺序
由于 Set 结构没有键名,所以 values 和 keys 方法的行为完全一致。
WeakSet
- 成员只能是对象,而不能是其他类型的值
- WeakSet 中的对象都是弱引用,如果其他对象都不再引用该对象,那么 GC 会自动回收该对象所占的内存,不考虑该对象是否在 WeakSet 中
- 没有 size 属性,不可遍历