forEach中没有内在的能力实现break。要中断执行,必须抛出某种异常。如:
var BreakException = {};
try {
[1, 2, 3].forEach(function(el) {
console.log(el);
if (el === 2) throw BreakException;
});
} catch (e) {
if (e !== BreakException) throw e;
}
JavaScript异常并不是非常完美。传统的for循环可能更合适,如果你真的需要中断。
使用Array.some
你也可以使用Array.some方法
[1, 2, 3].some(function(el) {
console.log(el);
return el === 2;
});
这是因为只要按数组顺序执行的任何回调返回true,就会有一些回调返回true,从而使其余回调的执行短路。
var Book = {"Titles":[
{
"Book3" : "BULLETIN 3"
}
,
{
"Book1" : "BULLETIN 1"
}
,
{
"Book2" : "BULLETIN 2"
}
]}
var findbystr = function(str) {
var return_val;
Book.Titles.forEach(function(data){
if(typeof data[str] != 'undefined')
{
return_val = data[str];
}
}, str)
return return_val;
}
book = findbystr('Book1');
console.log(book);