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"

规范

SpecificationStatusComment
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Set.prototype.forEach' in that specification.StandardInitial definition.
ECMAScript Latest Draft (ECMA-262)The definition of 'Set.prototype.forEach' in that specification.Living Standard

浏览器兼容性

FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38(Yes)25.0 (25.0)11257.1

FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic supportNo support38(Yes)25.0 (25.0)No supportNo support8