有時候,需要遍歷一個數組,對數組中的元素進行一些操作,但當某個元素滿足一定條件時,就退出循環。
通常,會使用下面的寫法:
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
}
其實,也可以利用數組自帶的方法。可能你會立馬想到forEach這個方法,但是有一些人并不知道,這個方法并不支持break操作。
var arr = [1, 2, 3, 4, 5];
arr.forEach((el, idx) => {
if(idx === 3) {
break;
}
console.log(idx);
})
// 上面的代碼會發生錯誤
// Uncaught SyntaxError: Illegal break statement
那么,forEach不行,還有什么方法呢?
有的,some、every就可以了。
some這個方法,會對數組進行遍歷操作,當遍歷到某一元素返回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有點類似,也會對數組進行遍歷操作,但是當遍歷到某一元素返回false時,就停止遍歷,并返回false,否則就遍歷所有元素。僅當所有元素的操作都返回true時,此方法返回的結果才為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;
})