forEach要领跳出轮回

前文

没怎么明白JavaScript的forEach要领的童鞋运用forEach时很轻易碰到一个题目就是,当你想要跳出这个轮回时,发明returnbreak是不起作用的。下面我们来剖析一下缘由以及解决要领。

正文

起首我们要知道的是forEach要领的机制是对数组的每一个有用元素实行一次callback函数,然后returnbreak等只作用于一个函数,也就造成了没法跳出forEach轮回的题目,而是只能跳过当前函数的实行。

解决方案

曲线救国(SegmentFault

经由过程运用抛出非常的体式格局能够中断。

function foo(arr ,item){
    var BreakException= {};

    try {
        arr.forEach(function(i) {
            if(i === item) throw BreakException;
            console.log(i);
        });
    } catch(e) {
        if (e!==BreakException) throw e;
    }
}

Array.some&Array.every

一般的运用环境:假如是测试一个数组里的元素是不是相符某前提,且须要返回一个布尔值则应当运用这两个要领。这里可用于跳出轮回。

function foo(arr ,item){
        arr.some(function(i) {
            if(i === item) return true;
            console.log(i);
        });
}
function foo(arr ,item){
        arr.every(function(i) {
            if(i === item) return false;
            console.log(i);
        });
}

循序渐进

假如你须要如许,运用forEach()要领是毛病的,你能够用一个简朴的轮回作为替换。—— MDN
关于多重for轮回,我们跳出轮回须要特别处置惩罚一下:

xh:    //起首将轮回定名
 for(var i=0;i<10;i++){
    for(var j=0;j<5;j++){
        if(i==3 && j==4){
            break xh;    //跳出轮回xh
        }
    }
 }

参考

  1. https://segmentfault.com/q/10…
  2. https://developer.mozilla.org…
    原文作者:Alvabill
    原文地址: https://segmentfault.com/a/1190000013660402
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞