该新特性属于 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 |