新聞中心
面試官:你能停止 JavaScript 中的 forEach 循環(huán)嗎?這是我在面試中曾被問到的一個(gè)問題,我當(dāng)初的回答是:“不,我不能這樣做?!?/p>

利川ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
不幸的是,我的回答導(dǎo)致面試官突然結(jié)束了面試,對(duì)的,是突然結(jié)束的!
我對(duì)結(jié)果感到沮喪,問面試官:“為什么?實(shí)際上可以停止 JavaScript 中的 forEach 循環(huán)嗎?”
在面試官回答之前,我花了一些時(shí)間解釋我對(duì)為什么我們不能直接停止 JavaScript 中的 forEach 循環(huán)的理解。
一、序言
這個(gè)問題估計(jì)會(huì)難倒一部分同學(xué)。甚至?xí)腥朔磫?,forEach循環(huán)在JavaScript中能終止嗎? 比如 ,我舉個(gè)例子
const array = [ -3, -2, -1, 0, 1, 2, 3 ]
array.forEach((it) => {
if (it >= 0) {
console.log(it)
// 0 1 2 3
return // or break
}
})從這個(gè)例子來看,好像不管是通過return還是break都無法終止forEach循環(huán)。 forEach相當(dāng)于就是函數(shù)的執(zhí)行,比如下面這段代碼,即使func1執(zhí)行了return語句,仍然會(huì)打印出2。
const func1 = () => {
console.log(1)
return
}
const func2 = () => {
func1()
console.log(2)
}
func2()二、終止方法
然而,我能想到三種方式可以終止forEach循環(huán)。
1. 拋出錯(cuò)誤
當(dāng)找到一個(gè)大于等于0的數(shù)字之后,return循環(huán)將終止執(zhí)行,所以控制臺(tái)只會(huì)輸出數(shù)字0,代碼如下:
const array = [ -3, -2, -1, 0, 1, 2, 3 ]
try {
array.forEach((it) => {
if (it >= 0) {
console.log(it) // 輸出:0
throw Error(`We've found the target element.`)
}
})
} catch (err) {
}2. 將數(shù)組長度設(shè)置成0
我們也能通過將數(shù)組長度設(shè)置成0來終止forEach循環(huán)。代碼如下
const array = [ -3, -2, -1, 0, 1, 2, 3 ]
array.forEach((it) => {
if (it >= 0) {
console.log(it) // 輸出:0
array.length = 0
}
})3. 將數(shù)組元素移除
當(dāng)滿足條件時(shí),使用splice方法將數(shù)組內(nèi)元素移除,也能終止forEach循環(huán)。代碼如下:
const array = [ -3, -2, -1, 0, 1, 2, 3 ]
array.forEach((it, i) => {
if (it >= 0) {
console.log(it) // 輸出:0
array.splice(i + 1, array.length - i)
}
})三、建議
建議使用for和some
在日常工作中,一般是不會(huì)出現(xiàn)一種情況是讓你終止forEach循環(huán)的,如果有終止的情況,可以使用for和some方法。
for
const array = [ -3, -2, -1, 0, 1, 2, 3 ]
for (let i = 0, len = array.length; i < len; i++) {
if (array[ i ] >= 0) {
console.log(array[ i ])
break
}
}some
const array = [ -3, -2, -1, 0, 1, 2, 3 ]
array.some((it, i) => {
if (it >= 0) {
console.log(it)
return true
}
})最后,3種關(guān)于在JavaScript中終止forEach循環(huán)的方法就先介紹到這里了,希望對(duì)你有所幫助,感謝你的閱讀,編程快樂!
本文標(biāo)題:三種在JavaScript中終止forEach循環(huán)的方式
本文地址:http://m.fisionsoft.com.cn/article/cdgihhh.html


咨詢
建站咨詢
