Code前端首页关于Code前端联系我们

Array.forEach 实现了短路

terry 2年前 (2023-09-09) 阅读数 214 #Javascript
文章标签 forEachJavaScript

ForEach 没有固有的方式来实现中断。必须抛出某种异常才能中断执行。例如:

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 异常并不完美。如果您确实需要中断,传统循环可能更合适。

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

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门