前文
没怎么明白JavaScript的forEach
要领的童鞋运用forEach
时很轻易碰到一个题目就是,当你想要跳出这个轮回时,发明return
、break
是不起作用的。下面我们来剖析一下缘由以及解决要领。
正文
起首我们要知道的是forEach
要领的机制是对数组的每一个有用元素实行一次callback
函数,然后return
、break
等只作用于一个函数,也就造成了没法跳出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
}
}
}