Set.prototype.forEach()

基线 广泛可用

此功能已经成熟,并且可以在许多设备和浏览器版本上运行。它自以下时间以来在所有浏览器中都可用 2015 年 7 月.

forEach()Set 实例的方法,它会为该集合中的每个值(按插入顺序)执行一次提供的函数。

试一试

语法

js
forEach(callbackFn)
forEach(callbackFn, thisArg)

参数

callback

要在集合的每个条目上执行的函数。该函数将使用以下参数调用

value

每次迭代的值。

key

每次迭代的键。这始终与value相同。

set

正在迭代的集合。

thisArg 可选

在执行callbackFn时用作this的值。

返回值

无 (undefined).

描述

forEach() 方法会对Set对象中实际存在的每个值执行一次提供的callback。它不会为已删除的值调用。但是,它会为存在但值为undefined的值执行。

callback 被调用时带有三个参数

  • 元素值
  • 元素键
  • 正在遍历的Set对象

Set对象中没有键,因此前两个参数都是包含在Set中的。这使其与MapArray的其他forEach()方法保持一致。

如果向forEach()提供了thisArg参数,则在调用callback时会将其传递给它,用作其this值。否则,将传递值undefined用作其this值。callback最终可以观察到的this值将根据确定函数看到的this的通常规则来确定。

每个值只访问一次,除非在forEach()完成之前将其删除并重新添加。对于在访问之前删除的值,不会调用callback。在forEach()完成之前添加的新值将被访问。

forEach()会为Set对象中的每个元素执行一次callback函数;它不返回值。

示例

记录 Set 对象的内容

以下代码为Set对象中的每个元素记录一行

js
function logSetElements(value1, value2, set) {
  console.log(`s[${value1}] = ${value2}`);
}

new Set(["foo", "bar", undefined]).forEach(logSetElements);

// Logs:
// "s[foo] = foo"
// "s[bar] = bar"
// "s[undefined] = undefined"

规范

规范
ECMAScript 语言规范
# sec-set.prototype.foreach

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅