1. 犀牛前端部落首页
  2. JavaScript百科

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);

原创文章,作者:犀牛前端部落,如若转载,请注明出处:https://www.pipipi.net/2940.html

发表评论

登录后才能评论