成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

三種在JavaScript中終止forEach循環的方式

開發 前端
面試官:你能停止 JavaScript 中的 forEach 循環嗎?這是我在面試中曾被問到的一個問題,我當初的回答是:“不,我不能這樣做。”

面試官:你能停止 JavaScript 中的 forEach 循環嗎?這是我在面試中曾被問到的一個問題,我當初的回答是:“不,我不能這樣做。”

不幸的是,我的回答導致面試官突然結束了面試,對的,是突然結束的!

我對結果感到沮喪,問面試官:“為什么?實際上可以停止 JavaScript 中的 forEach 循環嗎?”

在面試官回答之前,我花了一些時間解釋我對為什么我們不能直接停止 JavaScript 中的 forEach 循環的理解。

一、序言

這個問題估計會難倒一部分同學。甚至會有人反問,forEach循環在JavaScript中能終止嗎? 比如 ,我舉個例子

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
  }
})

從這個例子來看,好像不管是通過return還是break都無法終止forEach循環。 forEach相當于就是函數的執行,比如下面這段代碼,即使func1執行了return語句,仍然會打印出2。

const func1 = () => {
  console.log(1)
  return
}
 
const func2 = () => {
  func1()
  console.log(2)
}
 
func2()

二、終止方法

然而,我能想到三種方式可以終止forEach循環。

1. 拋出錯誤

當找到一個大于等于0的數字之后,return循環將終止執行,所以控制臺只會輸出數字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. 將數組長度設置成0

我們也能通過將數組長度設置成0來終止forEach循環。代碼如下

const array = [ -3, -2, -1, 0, 1, 2, 3 ]
 
array.forEach((it) => {
  if (it >= 0) {
    console.log(it) // 輸出:0
    array.length = 0
  }
})

3. 將數組元素移除

當滿足條件時,使用splice方法將數組內元素移除,也能終止forEach循環。代碼如下:

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

在日常工作中,一般是不會出現一種情況是讓你終止forEach循環的,如果有終止的情況,可以使用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種關于在JavaScript中終止forEach循環的方法就先介紹到這里了,希望對你有所幫助,感謝你的閱讀,編程快樂!

責任編輯:華軒 來源: web前端開發
相關推薦

2011-06-03 11:53:06

Spring接口

2024-07-01 12:42:58

2012-07-17 09:16:16

SpringSSH

2020-08-12 08:51:19

Go語言Concurrency后臺

2023-11-01 13:22:15

Java循環

2024-08-30 08:43:24

JavaScriptforEachfor循環

2024-08-08 08:38:34

JavaScriptforEach循環

2020-11-01 17:10:46

異步事件開發前端

2022-04-18 09:24:36

PyCharmPythonUbuntu

2021-11-05 21:33:28

Redis數據高并發

2019-11-20 18:52:24

物聯網智能照明智能恒溫器

2014-12-31 17:42:47

LBSAndroid地圖

2021-06-24 08:52:19

單點登錄代碼前端

2010-03-12 17:52:35

Python輸入方式

2022-06-26 06:31:25

Linux電子游戲

2011-07-22 17:22:20

Spring

2021-11-11 11:24:54

JavaScript模型事件

2025-03-19 10:22:09

JavaScript編程語言開發

2013-06-17 17:08:47

Windows PhoWP開發共享數據方式

2015-01-05 09:56:20

可穿戴設備
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: a黄在线观看 | 一区二区在线免费观看视频 | 成人av网站在线观看 | 久久精品国产一区二区电影 | 成人日韩 | 一区二区三区电影在线观看 | 国产伦精品一区二区三区精品视频 | 午夜精品一区二区三区在线观看 | 国产亚洲精品精品国产亚洲综合 | 久久午夜剧场 | 免费成人在线网站 | 日本一区二区三区四区 | 美女天堂av| 国产精品视频免费观看 | 欧美国产日韩在线 | 精品国产三级 | 日本成人免费网站 | 国产精品观看 | 春色av| 自拍偷拍中文字幕 | 亚洲电影一级片 | 亚洲精品免费在线 | 亚洲欧美日韩一区二区 | 久久久青草婷婷精品综合日韩 | 中文字幕av亚洲精品一部二部 | 国产精品中文字幕在线观看 | 国产精品成人品 | av一区二区三区四区 | 国产一区二 | 精品九九九 | 91视频久久| 精品综合视频 | 成人美女免费网站视频 | 99热热99| 国产电影一区二区 | 国产一级毛片精品完整视频版 | 久久久久久国产精品久久 | 紧缚调教一区二区三区视频 | 亚洲成人一区二区三区 | 亚洲另类春色偷拍在线观看 | 日韩欧美一区二区三区免费观看 |