|
|
|
|
|
JavaScript forEach
不能 break
(中途退出),雖然可以通過一些方法來中斷forEach,但并不建議那樣做,我們更加建議使用JavaScript forEach
的替代品來實現(xiàn)break
中斷,這是本文要介紹的內(nèi)容。
第一個,也是我個人在這種情況下推薦的一個,是使用標準的 for
循環(huán)和 break
語句。
這是一個如何使用 for
循環(huán)來中斷循環(huán)的示例:
const myArray = [1, 2, 3];
for (let i = 0; i < myArray.length; i += 1) {
const arrayItem = myArray[i]
if (arrayItem > 1) {
break
}
console.log(arrayItem, i, myArray)
}
正如上面的示例中所看到的,只需很少的工作,我們就可以讓 for
循環(huán)完全完成 forEach
循環(huán)為我們所做的工作,除了現(xiàn)在我們可以使用 break
語句來中斷額外的迭代。
while
循環(huán)與 for
循環(huán)的原理基本相同,只是不在 while
循環(huán)范圍內(nèi)定義索引。
下面是一個示例,說明如何使用 while
循環(huán)代替 forEach
循環(huán)來中斷:
const myArray = [1, 2, 3];
let index = 0;
while (index < myArray.length) {
const arrayItem = myArray[index]
if (arrayItem > 1) {
break
}
console.log(arrayItem, index, myArray)
index += 1
}
可以用于 forEach
循環(huán)以執(zhí)行某種中斷的最后一個替代方法是 Array.prototype.some
方法。
仍然無法從其中調(diào)用 break
語句,但是可以從回調(diào)中返回一個布爾值,some
循環(huán)將使用該布爾值作為停止遍歷數(shù)組項的指示符。
Array.prototype.some
方法的最初目的是知道一個項目是否存在于數(shù)組中,如果存在,該方法將返回 true
,如果不存在則返回 false
。
當我們想要模擬 break
語句時,我們可以通過在回調(diào)中返回 true
來利用它來創(chuàng)建類似 break
的功能。
下面是一個如何使用 some
方法來中斷循環(huán)的例子:
[1, 2, 3].some(a => {
console.log(a)
return true
})
輸出
1
true
用幾句話總結(jié)這篇文章,如果你需要break
(中斷) JavaScript Array.prototype.forEach
,那么你不應該使用 JavaScript Array.prototype.forEach
,而應該使用 for
循環(huán)或 Array.prototype.some
方法。
相關(guān)文章