1. 程式人生 > >JS中arr.forEach()如何跳出迴圈

JS中arr.forEach()如何跳出迴圈

我們都知道for迴圈裡要跳出整個迴圈是使用break,但在陣列中用forEach迴圈如要退出整個迴圈呢?使用break會報錯,使用return也不能跳出迴圈。

使用break將會報錯:

var arr = [1,2,3,4,5];
var num = 3;
arr.forEach(function(v){
   if(v == num) {
       break;
   }
   console.log(v);
});

使用return也不能跳出整個迴圈:

var arr = [1,2,3,4,5];
var num = 3;
arr.forEach(function(v){
   if(v == num) {
       return;
   }
   console.log(v);
});

那麼在用forEach()遍歷陣列時要如何才能跳出迴圈呢?經過查詢資料後,我找到了兩種方法可以實現跳出迴圈。

第一種:使用try···catch捕獲異常實現

try{
        var array = ["first","second","third","fourth"];
        array.forEach(function(item,index){
                if(item == "third"){
                        var a = aaaa;// first second 後就報錯,就跳出迴圈了
                        throw new Error("ending");//報錯,就跳出迴圈
                }else{
                        log(item);
                }
        })
}catch(e){
        if(e.message == "ending"){
                log("結束了") ;
        }else{
                log(e.message);
        }
}

第二種方法:使用arr.some()或者arr.every()替代

some()當內部return true時跳出整個迴圈:

var arr = [1,2,3,4,5];
var num = 3;
arr.some(function(v){
   if(v == num) {
       return true;
   }
   console.log(v);
});

every()當內部return false時跳出整個迴圈

var arr = [1,2,3,4,5];
var num = 3;
arr.every(function(v){
   if(v == num) {
       return false;
   }else{
       console.log(v);
       return true;
   }
});