ES6——Set

100 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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方法返回的遍历器中是会包含一个和键值一样的键名,如下图中的结果所示:

image.png

另外,Set数据结构和数组一样,是拥有forEach方法的,可以用来遍历每一个元素,如下:

set.forEach((value, key) => console.log(key, value))
// 结果
1 1
2 2
3 3

可以看到,Set的forEach方法中的处理函数中会含有键值、键名,但Set数据的键名就是键值,所以上述代码中key和value参数永远是一样的值。