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