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