阅读 (0)

JavaScript Set

JavaScript 的 Set(集合)是一组唯一值的集合。

每个值只能在 Set 中出现一次。

Set 可以容纳任何数据类型的值。

Set 方法

方法描述
new Set()创建新的 Set。
add()向 Set 中添加新元素。
delete()从 Set 中移除元素。
has()如果值存在则返回 true。
clear()从 Set 中移除所有元素。
forEach()为每个元素调用回调函数。
values()返回包含 Set 中所有值的迭代器。
keys()与 values() 相同。
entries()返回迭代器,其中包含 Set 中的 [value,value] 值值对。
属性描述
size返回 Set 中元素的数量。

如何创建 Set

您可以通过以下方式创建 JavaScript Set:

  • 将数组传递给 new Set()

  • 创建一个新的 Set,然后使用 add() 方法添加值

  • 创建一个新的 Set,然后使用 add() 方法添加变量

新的 Set() 方法

例子 1

将数组传递给新的 Set() 构造函数:

// 创建 Set
const letters = new Set(["a","b","c"]);

亲自试一试

例子 2

创建一个 Set 并添加字面量值:

// 创建 Set
const letters = new Set();

// 将值添加到 Set
letters.add("a");
letters.add("b");
letters.add("c");

亲自试一试

例子 3

创建一个 Set 并添加变量:

// 创建变量
const a = "a";
const b = "b";
const c = "c";

// 创建 Set
const letters = new Set();

// 向 Set 添加变量
letters.add(a);
letters.add(b);
letters.add(c);

亲自试一试

add() 方法

例子 1

letters.add("d");
letters.add("e");

亲自试一试

例子 2

如果您添加相等的元素,只有第一个会被保存:

letters.add("a");
letters.add("b");
letters.add("c");
letters.add("c");
letters.add("c");
letters.add("c");
letters.add("c");
letters.add("c");

亲自试一试

forEach() 方法

forEach() 方法为每个 Set 元素调用函数:

实例

// 创建 Set
const letters = new Set(["a","b","c"]);

// 列出所有条目
let text = "";
letters.forEach (function(value) {
  text += value;
})

亲自试一试

values() 方法

例子 1

values() 方法返回包含 Set 中所有值的 Iterator 对象:

letters.values()   // 返回 [object Set Iterator]

亲自试一试

例子 2

现在您可以使用 Iterator 对象访问元素:

// 创建迭代器
const myIterator = letters.values();

// 列出所有值
let text = "";
for (const entry of myIterator) {
  text += entry;
}

亲自试一试

keys() 方法

Set 没有键。

keys() 返回与 values() 相同的结果。

这使得 Set 与 Map 相兼容。

实例

letters.keys()   // 返回 [object Set Iterator]

亲自试一试

entries() 方法

Set 没有键(key)。

entries() 方法返回的是 [value,value] 值值对,而不是 [key,value] 键值对。

这使得 Set 与 Map 兼容:

实例

// 创建迭代器(Iterator)
const myIterator = letters.entries();

// 列出所有条目
let text = "";
for (const entry of myIterator) {
  text += entry;
}

亲自试一试

Set 是对象

对于 Set,typeof 返回 object:

typeof letters;      // 返回 object

亲自试一试

对于 Set,instanceof Set 返回 true:

letters instanceof Set;  // 返回 true

亲自试一试