对遍历循环如何跳出循环,通常我们会想到 return false 或者 break,但有些时候又不起作用,这是怎么回事呢?
1.every()
用来判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回 true,因此当 every 内部返回 false 时,跳出整个循环。
var arr = [1, 2, 3, 4, 5];
var arr3 = arr.every(function(x) {
console.log(x) // 1 2 3
return x < 3;
});
console.log(arr3); // false
2.some()
用来判断数组中是否存在满足条件的项,只要有一项条件,就会返回 true,因此当 some 内部返回 true 时,跳出整个循环。
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.some(function(x) {
console.log(x) // 1
return x < 3;
});
console.log(arr2); //true
3.forEach()
没有返回值,对数组中的每一项运行给定函数,参数都是 function 类型。return false 无法终止循环。
var arr = [11, 22, 33, 44, 55];
arr.forEach(function(x){
console.log(x); // 11, 22, 33, 44, 55
if (x === 11) return false
});
4.map()
返回一个新的数组,每个元素为调用函数处理后的值,return false 无法终止循环。
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.map(function(item){
if (item === 2) return false
return item * item;
});
console.log(arr2); //[1, 4, 9, 16, 25]
5.for()
遍历数组,且通过 return false 或 break 终止循环。
var arr = [11, 22, 33, 44, 55];
for(let i = 0; i < arr.length; i++){
console.log(arr[i]); // 11
if (arr[i] === 11) return false
}
当然我们也可以使用 for...of 遍历数据也会有同样的效果。