ES6 Set

24 Dec 2024 | 阅读 4 分钟

Set 是一种数据结构,允许您创建唯一值的集合。Set 是处理单个对象或单个值的集合。

Set 是类似于数组的集合,但它不包含任何重复项。它允许我们存储唯一值。它支持原始值和对象引用。

与 Map 类似,Set 也是有序的,即 Set 中的元素按其插入顺序进行迭代。它返回 Set 对象。

语法

让我们通过以下示例了解 Set 的概念

示例

Set 的所有元素都必须是唯一的。因此,上面示例中的 colors Set 仅包含四个不同的元素。在成功执行上述代码后,我们将获得以下输出。

输出

Set { 'Green', 'Red', 'Orange', 'Yellow' }

让我们看看 Set 的属性和方法。

Set 属性

序号。性质描述
1.Set.size此属性返回 Set 对象中值的数量。

Set.size

Set 对象的此属性返回表示 Set 对象中元素数量的值。

示例

输出

4
Set { 'Green', 'Red', 'Orange', 'Yellow' }

Set 方法

Set 对象包含多种方法,如下表所示

序号。方法描述
1.Set.prototype.add(value)它将新元素附加到 Set 对象的给定值。
2.Set.prototype.clear()它从 Set 对象中删除所有元素。
3.Set.prototype.delete(value)它删除与相应值关联的元素。
4.Set.prototype.entries()它返回一个新的迭代器对象,其中包含 Set 对象中每个元素的数组,按照插入顺序。
5.Set.prototype.forEach(callbackFn[, thisArg])它执行回调函数一次。
6.Set.prototype.has(value)当传递的值在 Set 中时,此方法返回 true。
7.Set.prototype.values()它返回新的迭代器对象,其中包含 Set 中每个元素的值,按照插入顺序。

现在,我们将详细了解上述 Set 对象的方法。

Set.prototype.add(value)

此方法用于将新元素与现有值附加到 Set 对象。

示例

输出

7
Set { 'Green', 'Red', 'Orange', 'Yellow', 'Violet', 'Indigo', 'Blue' }

Set.prototype.clear()

它从 Set 中清除所有对象。

示例

输出

0

Set.prototype.delete(value)

此方法用于从 Set 对象中删除相应的传递值。

示例

输出

6
Set { 'Green', 'Red', 'Orange', 'Yellow', 'Indigo', 'Blue' }

Set.prototype.entries()

它返回一个新 Set 迭代器的对象。它包含每个元素的值的数组。它保持插入顺序。

示例

输出

[ 'Green', 'Green' ]
[ 'Red', 'Red' ]
[ 'Orange', 'Orange' ]
[ 'Yellow', 'Yellow' ]
[ 'Violet', 'Violet' ]
[ 'Indigo', 'Indigo' ]
[ 'Blue', 'Blue' ]

Set.prototype.forEach(callbackFn[, thisArg])

它为每个 Map 条目执行一次指定的回调函数。

示例

输出

Green
Red
Orange
Yellow
Violet
Indigo
Blue

Set.prototype.has(value)

它返回一个布尔值,该值指示 Set 对象中是否存在与相应值一起的元素。

示例

输出

true
true
false

Set.prototype.values()

它返回一个新迭代器对象,该对象包含 Set 对象中每个元素的值,按照插入顺序。

示例

输出

Green
Red
Orange
Yellow
Violet

弱 Set

它用于存储对象的集合。它类似于 Set 对象,因此它也不能存储重复值。与弱映射类似,弱集合不能被迭代。弱集合只能包含可能被垃圾回收的对象。

弱集合仅包含 Set 对象的 add(value), delete(value)has(value) 方法。

示例

输出

true
false

迭代器

迭代器是一个对象,它定义了序列和在其终止时的返回值。它允许一次访问一个对象的集合。Set 和 Map 都包含返回迭代器的方法。

迭代器是具有 next() 方法的对象。当调用 next() 方法时,迭代器返回一个对象,其中包含 'value''done' 属性。

'done' 是一个布尔值,在读取集合中的所有元素后返回 true。否则,它返回 false。

让我们了解迭代器的实现以及 Set 对象。

示例

输出

{ value: 'Green', done: false }
{ value: [ 'Green', 'Green' ], done: false }
{ value: 'Green', done: false }

下一主题Es6 数组方法