forEach 方法 (Array)

为数组中的每个元素执行指定操作。

语法

array1.forEach(callbackfn[, thisArg])

参数

参数定义
array1必要参数。一个数组对象。
callbackfn必要参数。最多可以接受三个参数的函数。对于数组中的每个元素,forEach都会调用callbackfn函数一次。
thisArg可选参数。callbackfn函数中的this关键字可引用的对象。如果省略thisArg,则undefined将作用this值。

异常

如果callbackfn参数不是函数对象,则将引发TypeError异常。

备注

对于数组中出现的每个元素,forEach方法都会调用callbackfn函数一次(采用升序索引顺序)。将不会为数组中缺少的元素调用回调函数。

除了数组对象之外,forEach方法可由具有length属性且具有按数字编制索引的属性名的任何对象使用。

回调函数语法

回调函数的语法如下所示:

function callbackfn(value, index, array1)

你可使用最多三个参数来声明回调函数。

回调函数的参数如下所示。

回调函数参数定义
value数组元素的值。
index数组元素的数字索引。
array1包含该元素的数组对象。

修改数组对象

forEach方法不直接修改原始数组,但回调函数可能会修改它。下表描述了在forEach方法启动后修改数组对象所获得的结果。

forEach方法启动后的条件元素是否传递给回调函数?
在数组的原始长度之外添加元素。否。
添加元素以填充数组中缺少的元素。是,如果该索引尚未传递给回调函数。
元素已更改。是,如果该元素尚未传递给回调函数。
从数组中删除元素。否,除非该元素已传递给回调函数。

示例

下面的示例演示了forEach方法的用法。

// Define the callback function.
function ShowResults(value, index, ar) {
  document.write("value: " + value);
  document.write(" index: " + index);
  document.write("<br />");
}
// Create an array.
var letters = ['ab', 'cd', 'ef'];
// Call the ShowResults callback function for each
// array element.
letters.forEach(ShowResults);
// Output:
// value: ab index: 0
// value: cd index: 1
// value: ef index: 2

示例

在下面的示例中,callbackfn参数包含回调函数的代码。

// Create an array.
var numbers = [10, 11, 12];
// Call the addNumber callback function for each array element.
var sum = 0;
numbers.forEach(
  function addNumber(value) { sum += value; }
);
document.write(sum);
// Output: 33

示例

下面的示例演示了thisArg参数的用法,该参数指定可以对其引用this关键字的对象。

// Define the object that contains the callback function.
var obj = {
  showResults: function(value, index) {
    // Call calcSquare by using the this value.
    var squared = this.calcSquare(value);
    document.write("value: " + value);
    document.write(" index: " + index);
    document.write(" squared: " + squared);
    document.write("<br />");
  },
  calcSquare: function(x) { return x * x }
};
// Define an array.
var numbers = [5, 6];
// Call the showResults callback function for each array element.
// The obj is the this value within the
// callback function.
numbers.forEach(obj.showResults, obj);
// Embed the callback function in the forEach statement.
// The obj argument is the this value within the obj object.
// The output is the same as for the previous statement.
numbers.forEach(function(value, index) { this.showResults(value, index) }, obj);
// Output:
// value: 5 index: 0 squared: 25
// value: 6 index: 1 squared: 36
// value: 5 index: 0 squared: 25
// value: 6 index: 1 squared: 36

必备条件

在以下文档模式中受支持:Internet Explorer 9标准模式、Internet Explorer 10标准模式、Internet Explorer 11标准模式。应用商店应用(Windows 8和Windows Phone 8.1)中也受支持。请参阅版本信息

在以下文档模式中不受支持:怪异模式、Internet Explorer 6 标准模式、Internet Explorer 7 标准模式、Internet Explorer 8 标准模式。

如果你喜欢这篇文章,敬请给站长打赏↑

除特别注明外,本站所有文章均为本站站长原译,转载请注明出处。