1. 程式人生 > >Javascript Array forEach()中無法return和break,代替方法some()與every()

Javascript Array forEach()中無法return和break,代替方法some()與every()

我們都知道for迴圈裡要跳出整個迴圈是使用break和return,但在陣列中用forEach迴圈如要退出整個迴圈使用break會報錯,使用return也不能跳出迴圈。查閱相關資料,發現無法終止forEach遍歷,跳出迴圈。

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

è¿éåå¾çæè¿°

針對這個問題可以使用陣列的另外兩個方法some()與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;
   }
});

è¿éåå¾çæè¿°