在for循环中,跳出循环有两种模式: break、continue;但是在forEach中,使用break或者continue都会报错;使用return在forEach不起作用,循环会继续执行,貌似充当了continue的角色。
forEach
方法的机制是对数组的每个有效元素执行一次callback
函数,然后return
、break
等只作用于一个函数,也就造成了无法跳出forEach
循环的问题,而是只能跳过当前函数的执行。
forEach跳出循环的方法
xh: //首先将循环命名 for(var i=0;i<10;i++){ for(var j=0;j<5;j++){ if(i==3 && j==4){ break xh; //跳出循环xh } } }
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; } }
正常的使用环境:如果是测试一个数组里的元素是否符合某条件,且需要返回一个布尔值则应该使用这两个方法。这里可用于跳出循环。
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); }); }
?