有時候的止,需要遍歷一個數(shù)組,對數(shù)組中的元素進(jìn)行一些操作乍桂,但當(dāng)某個元素滿足一定條件時冲杀,就退出循環(huán)。
通常睹酌,會使用下面的寫法:
var arr = [1, 2, 3, 4, 5];
for(var i = 0, len = arr.length; i < len; i++) {
if(i === 3) {
break;
}
console.log(i); // 0, 1, 2
}
其實权谁,也可以利用數(shù)組自帶的方法”镅兀可能你會立馬想到forEach這個方法旺芽,但是有一些人并不知道,這個方法并不支持break操作辐啄。
var arr = [1, 2, 3, 4, 5];
arr.forEach((el, idx) => {
if(idx === 3) {
break;
}
console.log(idx);
})
// 上面的代碼會發(fā)生錯誤
// Uncaught SyntaxError: Illegal break statement
那么采章,forEach不行,還有什么方法呢壶辜?
有的悯舟,some、every就可以了砸民。
some這個方法抵怎,會對數(shù)組進(jìn)行遍歷操作,當(dāng)遍歷到某一元素返回true時岭参,就會停止遍歷反惕,并返回true,否則就遍歷所有元素演侯,返回false姿染。
var arr = [1, 2, 3, 4, 5];
arr.some((el, idx) => {
if(idx === 3) {
return true;
}
console.log(idx); // 0, 1, 2
})
every這個方法跟some有點(diǎn)類似,也會對數(shù)組進(jìn)行遍歷操作秒际,但是當(dāng)遍歷到某一元素返回false時悬赏,就停止遍歷,并返回false娄徊,否則就遍歷所有元素舷嗡。僅當(dāng)所有元素的操作都返回true時,此方法返回的結(jié)果才為true嵌莉,否則為false进萄。
var arr = [1, 2, 3, 4, 5];
arr.every((el, idx) => {
if(idx === 3) {
return false;
}
console.log(idx); // 0, 1, 2
return true;
})