在上节,我们学习如何使用 JavaScript Array map() 方法来转换数组中的元素,错过的小伙伴可以点击文章《 【JavaScript 教程】第六章 数组12— map() :转换数组元素》进行学习。
那么,在今天的教程中,我们一起来学习如何使用 JavaScript Array forEach()方法对数组中的每个元素执行函数。
JavaScript Array forEach()方法介绍
通常,当我们想对数组的每个元素执行一个函数时,我们可以使用for循环语句。
例如,以下代码向控制台显示数组的每个元素:
let ranks = ['A', 'B', 'C'];
for (let i = 0; i < ranks.length; i++) {
console.log(ranks[i]);
}
输出:
A
B
C
JavaScript Array 提供了 forEach() 方法,允许您在每个元素上运行一个函数。
以下代码使用与上面代码等效的 forEach() 方法:
let ranks = ['A', 'B', 'C'];
ranks.forEach(function (e) {
console.log(e);
});
输出:
A
B
C
forEach() 方法迭代数组中的元素并为每个元素执行一次预定义函数。
下面说明了 forEach() 方法的语法。
Array.forEach(callback [, thisArg]);
forEach() 方法有两个参数:
1) 回调
forEach() 方法用于在每个元素上执行的回调函数。
回调接受以下参数:
-
currentElement:是当前正在处理的数组元素。
-
index:当前元素在数组中的索引。
-
array:调用 forEach() 方法的数组。
索引和数组是可选的。
2) thisArg
thisArg 是执行回调时用作 this 的值。
请注意,forEach() 函数返回 undefined,因此,它不像filter()、map()、some()、every() 和 sort()方法一样可链接:。
与 for 循环相比,forEach() 方法的一个限制是,我们不能使用 break 或 continue 语句来控制循环。
我们要终止 forEach() 方法中的循环,必须在回调函数内抛出异常。
更多 JavaScript Array forEach() 方法示例
让我们看一个使用 contextObject 的 forEach() 方法的示例。
下面举例说明 Counter 构造函数:
function Counter() {
this.count = 0;
let self = this;
return {
increase: function () {
self.count++;
},
current: function () {
return self.count;
},
reset: function () {
self.count = 0;
}
}
}
此示例显示如何将计数器对象传递给 forEach() 方法。
var counter = new Counter();
var numbers = [1, 2, 3];
var sum = 0;
numbers.forEach(function (e) {
sum += e;
this.increase();
}, counter);
console.log(sum); // 6
console.log(counter.current()); // 3
它们是怎么运行的。
-
首先,创建一个新的 Counter 对象。
-
接下来,定义一个由三个数字组成的数组。
-
然后,声明一个变量 sum 并将其赋值为零。
-
之后,在 numbers 数组上调用 forEach() 方法。在回调函数中,将元素添加到 sum 变量中,并调用 counter 对象的 increase() 方法。请注意,counter对象this在回调函数中被引用。
-
最后,在 Web 控制台中记录计数器的总和值和当前值。
在本教程中,我们学习了如何使用 JavaScript Array forEach() 方法对数组的每个元素执行回调。
今天的内容就到这里了。