携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情
Set是ES6中新增的一种数据结构,其和数组类似,但Set中储存的值都是唯一的,不会出现重复的值。
Set 属性及方法
属性
- Set.prototype.constructor:Set构造函数
- Set.prototype.size:表示Set中储存的值的总数量
使用:
const set = new Set([1,2,2,3]) // {1, 2, 3}
set.size // 3
上述代码中,我们通过构造函数生成了一个set,构造函数中传入初始值[1,2,2,3],但最终set只有1,2,3三个元素,可见set中的值都是唯一的,会自动去除一样的值。
方法
- Set.prototype.add(value):add方法表示向Set中添加元素,并返回Set本身
- Set.prototype.delete(value):delete方法表示删除Set中的某个元素,并会返回布尔值用了表示是否删除成功
- Set.prototype.has(value):has方法用来判断Set中是否含有此元素
- Set.prototype.clear():clear方法表示清空Set元素
- Set.prototype.keys():keys方法用来返回键名的遍历器
- Set.prototype.values():values方法用来返回值的遍历器
- Set.prototype.entries():entries方法用来返回键值对的遍历器
- Set.prototype.forEach():forEach方法用来遍历Set中的元素
对于Set操作方法的使用如下:
const set = new Set()
set.add(1).add(2).add(3) // {1, 2, 3}
set.delete(2) // true
set.has(2) // false
set.has(1) // true
set.clear()
set.size // 0
对于Set的遍历操作主要是keys()、values()、entries()、forEach()这四种,其中keys、values以及entries这三种返回的都是遍历器对象,其中keys方法和values方法返回的结果是一样的,因为Set数据结构没有键名只有键值。而entries方法返回的遍历器中是会包含一个和键值一样的键名,如下图中的结果所示:
另外,Set数据结构和数组一样,是拥有forEach方法的,可以用来遍历每一个元素,如下:
set.forEach((value, key) => console.log(key, value))
// 结果
1 1
2 2
3 3
可以看到,Set的forEach方法中的处理函数中会含有键值、键名,但Set数据的键名就是键值,所以上述代码中key和value参数永远是一样的值。