发布于 5年前

JavaScript跳出forEach循环

JavaScript提供了forEach用于遍历数组。但使用forEach做迭代时有一个问题,它不允许在遍历完所有元素之前终止循环跳出,即不能使用break语句。即使是在函数里使用return false也不行。

示例

var arr = ["a", "b, "c, "d"];
arr.forEach(function(value, index, _arr) {
   console.log(index + ": " + value);
   return false;
}); 

所有的结果都会输出。

替代方法:可以使用Array的some和every方法

Array的some()方法

Array的some方法遍历数组时,当return值为true时,它会终止遍历。

示例

var arr = ["a", "b, "c, "d"];
arr.forEach(function(value, index, _arr) {
   console.log(index + ": " + value);
   return value === "c";
}); 

输出为a,b,c前面三个值:

 0: a
 1: b
 2: c

Array的every()方法

与some()方法不同,every()方法遍历数组是,当return值为false,它会终止遍历,这是与some()方法相反的。

示例

var arr = ["a", "b, "c, "d"];
arr.forEach(function(value, index, _arr) {
   console.log(index + ": " + value);
   return index < 3;
}); 

输出:

0: a
1: b
2: c
©2020 edoou.com   京ICP备16001874号-3