Set.prototype.forEach()
Set 实例的 forEach() 方法会在该集合中的每个值上执行一次提供的函数,执行顺序为插入顺序。
试一试
function logSetElements(value1, value2, set) {
console.log(`s[${value1}] = ${value2}`);
}
new Set(["foo", "bar", undefined]).forEach(logSetElements);
// Expected output: "s[foo] = foo"
// Expected output: "s[bar] = bar"
// Expected output: "s[undefined] = undefined"
语法
js
forEach(callbackFn)
forEach(callbackFn, thisArg)
参数
回调-
一个函数,用于执行集合中的每个条目。该函数会接收以下参数:
thisArg可选-
执行
callbackFn时用作this的值。
返回值
无(undefined)。
描述
forEach() 方法会对 Set 对象中实际存在的每个值调用一次提供的 callback。对于已被删除的值,它不会被调用。但是,对于存在但值为 undefined 的值,它会被执行。
callback 的调用会接收到 三个参数:
- 元素值
- 元素键
- 正在遍历的
Set对象
Set 对象没有键,因此前两个参数都是 Set 中包含的 值。这是为了与 Map 和 Array 的其他 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® 2026 语言规范 # sec-set.prototype.foreach |
浏览器兼容性
加载中…