forEach()
方法在JavaScript中是一个数组方法,它允许你对数组的每个元素执行一个提供的函数。forEach()
方法按照升序(即索引顺序)为数组中的每个元素执行一次提供的函数,并且不直接修改原始数组(尽管回调函数中可以修改数组的元素)。但是,请注意,forEach()
方法对空数组不会执行回调函数。
语法
javascript复制代码
arr.forEach(function callback(currentValue[, index[, array]]) { | |
// 你的处理器逻辑 | |
}[, thisArg]); |
callback
:为数组中每个元素执行的函数,接收三个参数:currentValue
:数组中正在处理的当前元素。index
(可选):数组中正在处理的当前元素的索引。array
(可选):forEach()
方法正在操作的数组。
thisArg
(可选):执行callback
时用作this
的值。
示例
打印数组的每个元素
javascript复制代码
const array1 = ['a', 'b', 'c']; | |
array1.forEach(function(element) { | |
console.log(element); | |
}); | |
// 输出: | |
// a | |
// b | |
// c |
使用箭头函数
javascript复制代码
const array1 = ['a', 'b', 'c']; | |
array1.forEach(element => console.log(element)); | |
// 输出: | |
// a | |
// b | |
// c |
修改数组中的元素
虽然 forEach()
本身不返回新数组,但你可以在回调函数中修改数组的元素。
javascript复制代码
let fruits = ['Apple', 'Banana', 'Mango', 'Orange']; | |
fruits.forEach((item, index) => { | |
fruits[index] = item.toUpperCase(); | |
}); | |
console.log(fruits); | |
// 输出: ["APPLE", "BANANA", "MANGO", "ORANGE"] |
注意事项
forEach()
没有返回值(或者说,它返回undefined
)。- 如果需要基于数组中的元素创建一个新数组(例如,通过转换或选择),则应该使用
map()
方法而不是forEach()
。 - 如果需要遍历数组并提前退出(例如,在找到特定元素时),则应该使用传统的
for
循环或Array.prototype.some()
方法,因为forEach()
不能被中断。 forEach()
不会自动跳过那些已删除(即undefined
)的元素,但它不会访问那些未初始化的索引。如果你尝试访问这些未初始化的索引,将会得到undefined
。但是,如果你之前显式地将数组中的某个元素设置为undefined
,那么forEach()
将会访问它,并且你可以在回调函数中检测到这个值。