Array.forEach实现短路

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);
(0)
上一篇 2020年4月5日 下午10:55
下一篇 2020年4月5日 下午11:13

相关推荐

发表评论

登录后才能评论