Array.prototype.forEach()
方法用于迭代数组的每项成员。
语法:
arr.forEach( callbackfn [, thisArg ] )
类型声明:
interface Array<T> {forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;}
参数说明:
参数 | 说明 | 类型 |
---|---|---|
callbackfn | 用于遍历数组成员时执行的回调函数 | function |
thisArg | 执行回调函数的 this 值 |
callbackfn
函数的参数:
currentValue
:当前数组中处理的元素index
:数组中正处理的当前元素的索引array
:被调用的数组返回值:
返回 undefined
。
delete
方法等情况)或者未初始化的项将被跳过(但不包括那些值为 undefined
的项,例如在稀疏数组中)。forEach()
后添加到数组中的项不会被 callbackfn
访问到。如果已经存在的值被改变,则传递给 callbackfn
的值是 forEach
遍历到他们那一刻的值。已删除的项不会被遍历到。如果已访问的元素在迭代时被删除了(例如使用 shift()
) ,之后的元素将被跳过。forEach()
为每个数组元素执行 callbackfn
函数;不像 map()
或者 reduce()
,它总是返回 undefined
值,并且不可链式调用。典型用例是在一个链的最后执行副作用。注意: 没有办法中止或者跳出 forEach
循环,除了抛出一个异常。如果你需要这样,使用 forEach()
函数是错误的,你可以用一个简单的循环作为替代。如果您正在测试一个数组里的元素是否符合某条件,且需要返回一个布尔值,那么可使用 every()
或 some()
。如果可用,新方法 find()
或者 findIndex()
也可被用于真值测试的提早终止。
const arr = ['a', 'b', 'c'];arr.forEach(function (element) {console.log(element);});arr.forEach((element) => console.log(element));// a b c