JavaScript Array.forEach象调用break一样的短路
Array.forEach()循环是JavaScript中的一种内置方法,用于对任何数组进行迭代并对数组的每个元素执行函数。该方法的主要目的是在不使用循环手动迭代数组的情况下对数组的每个元素执行某些操作。
Array.forEach()方法用于在数组中为每个元素执行提供的函数。然而,它不提供类似于传统for循环中的break语句的内置机制来中断或提前退出循环。
然而,有几种方法可以实现类似的效果,并根据某些条件短路循环。
方法1:Array.some(): Array.some()方法可用于迭代数组并在满足条件时立即返回true,从而短路循环。如果任何元素不满足条件,则循环继续直到处理完所有元素。
语法:
array.some(callback(element[, index[, array]])[, thisArg])
- array: 要遍历的数组。
- callback: 对数组中的每个元素要调用的函数,它接受以下参数:
- element: 数组的当前元素。
- index(可选): 当前元素在数组中的索引。
- array(可选): 调用它的数组。
- thisArg(可选): 在回调函数中,this 关键字可以引用的对象。默认值为 undefined。
- callback: 对数组中的每个元素要调用的函数,它接受以下参数:
some() 方法返回一个布尔值,如果回调函数对数组中至少一个元素返回一个真值,则返回 true;否则返回 false。
示例:
Javascript
const array = [2, 4, 8, 10];
let found = false;
array.some(function (element) {
if (element === 6) {
found = true;
return true; // Short-circuits the loop
}
});
console.log("Output: ", found); // false
输出:
Output: false
方法2:for…of循环: 另一种中断数组循环的方法是使用for…of循环,而不是Array.forEach()。for…of循环提供了一个内置机制,可以使用break语句提前中断或退出循环。
语法:
for (variable of iterable) {
// code to be executed
}
- variable: 每个可迭代对象中要分配的新变量。
- iterable: 可以进行迭代的对象,如数组、字符串、映射或集合。
示例:
JavaScript
const array = [9, 4, 3, 11, 10];
let isFound = false;
for (const element of array) {
if (element === 3) {
isFound = true;
break; // short-circuits the loop
}
}
console.log("Output: ", isFound); // true
输出:
Output: true
方法3:Array.every() 方法: 与 Array.some() 类似,Array.every() 方法也可以用于迭代数组并在条件不满足时立即返回 false,从而短路循环。如果对所有元素都满足条件,则循环继续直到所有元素都被处理完。
语法:
array.every(callback(element[, index[, array]])[, thisArg])
- array: 要迭代的数组。
- callback: 要对数组中的每个元素调用的函数,该函数接受以下参数:
- element: 当前正在处理的元素。
- index(可选): 当前正在处理的元素的索引。
- array(可选): 调用该方法的数组。
- thisArg(可选): 在回调函数中,this关键字所指向的对象。默认值为undefined。
every()方法返回true,如果callback函数对数组中的所有元素都返回truthy值;否则返回false。
示例:
Javascript
const array = [11, 12, 13, 14, 51];
let isOdd = true;
array.every(function (el) {
if (el % 2 === 0) {
isOdd = false;
return false; // short-circuits the loop
}
return true;
});
console.log("Output: ", isOdd); // false
输出:
Output: false