MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

该新特性属于 ECMAScript 2015(ES6)规范,在使用时请注意浏览器兼容性。

forEach 方法根据集合中元素的顺序,对每个元素都执行提供的 callback 函数一次。

语法

mySet.forEach(callback[, thisArg])

参数

callback
每个元素都会执行的函数
thisArg
当执行callback函数时候,可以当作this来使用。

描述

这个forEach方法会针对集合中的每个元素执行提供的callback函数一次。 对于那些已经被删除的元素,它是不会执行的,但是,对于元素是undefined的情况则相反。

callback 有三个参数:

  • 元素的值
  • 元素的索引
  • 将要遍历的集合对象

Set对象中没有索引值(keys),前2个参数都是包含在Set中的元素的值(values),所以该回调函数和Map 以及Array的forEach函数是一致的。

如果提供了一个thisArg参数给forEach函数,当被调用时,该参数将会传递到callback回调函数中来指代this值。否则,this值会是undefined。由回调所能观察到的this对象是根据通常的规则来决定的,这是由一个函数决定的

forEach函数在第一次调用回调函数前确定所要处理的元素的范围。在调用forEach之后添加到Set对象的元素将不会被回调函数访问。如果Set对象的现有元素改变或者删除了,那么该元素传给回调函数的值会是forEach函数访问它们时的值。被删除的元素没有被访问。

forEach函数对每个Set对象的元素执行一次回调;它不会返回任何值。

例子

输出Set对象的内容

The following code logs a line for each element in an Set object:

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"

Specifications

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Set.prototype.forEach
Standard Initial definition.

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 38 25.0 (25.0) 11 25 7.1
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 未实现 38 25.0 (25.0) 未实现 未实现 8

See also

文档标签和贡献者

 此页面的贡献者: myl0204, tommyzqfeng, timlee1128, 201341, gaigeshen
 最后编辑者: myl0204,