set.forEach
set.forEach
forEach 方法根据集合中元素的顺序,对每个元素都执行提供的 callback 函数一次。
语法
mySet.forEach(callback[, thisArg])
参数
callback
每个元素都会执行的函数
返回值
undefined
.
描述
这个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对象的内容
以下代码为Set
对象中的每个元素记录一行:
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"
规范
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Set.prototype.forEach' in that specification. | Standard | Initial definition. |
ECMAScript Latest Draft (ECMA-262)The definition of 'Set.prototype.forEach' in that specification. | Living Standard | |
浏览器兼容性
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 38 | (Yes) | 25.0 (25.0) | 11 | 25 | 7.1 |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | No support | 38 | (Yes) | 25.0 (25.0) | No support | No support | 8 |