中斷數組循環

有時候,需要遍歷一個數組,對數組中的元素進行一些操作,但當某個元素滿足一定條件時,就退出循環。

通常,會使用下面的寫法:

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;
})
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容