JS中arr.forEach()如何跳出迴圈
阿新 • • 發佈:2018-12-14
我們都知道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; } });