📅  最后修改于: 2023-12-03 15:07:40.847000             🧑  作者: Mango
在 JavaScript 中,可以使用 Array.prototype.forEach()
方法对数组进行 for-each 操作。该方法可以接受一个函数作为参数,该函数将在数组中的每个元素上调用一次。这个函数有三个参数,分别是数组元素值、元素索引和数组本身。
const arr = ['apple', 'banana', 'orange'];
arr.forEach(function(element, index, array) {
console.log(element, index, array);
});
// 输出:
// "apple" 0 ["apple", "banana", "orange"]
// "banana" 1 ["apple", "banana", "orange"]
// "orange" 2 ["apple", "banana", "orange"]
使用箭头函数可以使代码更加简洁:
const arr = ['apple', 'banana', 'orange'];
arr.forEach((element, index, array) => console.log(element, index, array));
// 输出:
// "apple" 0 ["apple", "banana", "orange"]
// "banana" 1 ["apple", "banana", "orange"]
// "orange" 2 ["apple", "banana", "orange"]
Array.prototype.forEach()
方法还可以接受第二个参数,用于设置函数中的 this
值。如果不指定第二个参数,则默认为 undefined
。
const arr = ['apple', 'banana', 'orange'];
const obj = { name: 'fruits', color: 'blue' };
arr.forEach(function(element) {
console.log(this.name, element);
}, obj); // 指定函数中的 this 对象为 obj
// 输出:
// "fruits" "apple"
// "fruits" "banana"
// "fruits" "orange"
需要注意的是,Array.prototype.forEach()
方法是无法使用 break
或 return
语句提前结束循环的,如果需要提前结束循环,可以使用 Array.prototype.some()
或 Array.prototype.every()
方法。
const arr = [1, 2, 3, 4, 5];
// 使用 Array.prototype.some() 匹配到第一个符合条件的元素就结束循环
arr.some(function(element) {
console.log(element);
return element === 3; // 匹配到元素 3 后结束循环
});
// 输出:
// 1
// 2
// 3
// 使用 Array.prototype.every() 匹配所有符合条件的元素才结束循环
arr.every(function(element) {
console.log(element);
return element < 3; // 匹配到元素 3 后结束循环
});
// 输出:
// 1
// 2
// 3