解决问题的第一途径,最好从接口文档里面寻找方法。
直接引用原文:
注意: 除了抛出异常以外,没有办法中止或跳出 forEach()
循环。如果你需要中止或跳出循环,forEach()
方法不是应当使用的工具。
若你需要提前终止循环,你可以使用:
- 一个简单的 for 循环
- for...of / for...in 循环
Array.prototype.every()
Array.prototype.some()
Array.prototype.find()
Array.prototype.findIndex()
这些数组方法则可以对数组元素判断,以便确定是否需要继续遍历:
译者注:只要条件允许,也可以使用 filter()
提前过滤出需要遍历的部分,再用 forEach()
处理。
看看别人写的代码:
Array.prototype.some
some方法和forEach方法很相似,但是当return值为true的时候,它会终止遍历
Example:
var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];
ary.some(function (value, index, _ary) {
console.log(index + ": " + value);
return value === "CoffeeScript";
});
结果是:
0: Javascript
1: Java
2: CoffeeScript
Array.prototype.every
every 是一个和 some 差不多的方法,但是它是当返回值为 false 的时候退出循环
Example:
var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];
ary.every(function(value, index, _ary) {
console.log(index + ": " + value);
return value.indexOf("Script") > -1;
});
结果是:
0: JavaScript
1: Java
总结:some 替代 forEach。
其他参考:
1.https://segmentfault.com/a/1190000018826980
2.http://annvov.github.io/forEach.html
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于