這篇文章帶給大家的內容是關於如何中斷forEach循環(詳細介紹),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
在使用for迴圈的時候可以使用break 或return語句來結束for迴圈(return直接結束函數),但如果使用forEach迴圈如何跳出迴圈呢?
嘗試使用break 和return
先嘗試一使用return語句----木有效果
[1,2,3,4,5].forEach(item=>{ if(item===2){ return } console.log(item); })
MDN給出的官方解釋
為什麼會出現這樣的情況?先看一下官方文件的說明。
MDN文檔上明確說明forEach迴圈是不可以退出的。
引自MDN
There is no way to stop or break a forEach() loop other than by throwing an exception. If you need such behavior, the forEach() method is the wrong tool.
註: 沒有辦法中止或跳出forEach() 循環,除了拋出一個例外。如果你需要這樣,使用 forEach() 方法是錯誤的。
若你需要提前終止循環,你可以使用:
簡單迴圈
for...of 迴圈
Array.prototype.every()
Array.prototype.some()
Array.prototype.find()
Array.prototype.findIndex()
探究為什麼break和return不行
##先看看為什麼return沒有效果, break報錯,forEach的實作方式用程式碼表示出來可以寫成如下的結構const arr = [1, 2, 3, 4, 5]; for (let i = 0; i 2) return false; })(arr[i]) }使用return語句相當於在每個自執行函數中將回傳值複製給rs,但是實際對整個函數並沒有影響。而使用break語句報錯是因為再JS的解釋器中break語句是不可以出現在函數體內的。
如何變通跳出forEach迴圈
MDN官方推薦的方法
// every在碰到return false的时候,中止循环。some在碰到return ture的时候,中止循环。 var a = [1, 2, 3, 4, 5] a.every(item=>{ console.log(item); //输出:1,2 if (item === 2) { return false } else { return true } }) var a = [1, 2, 3, 4, 5] a.some(item=> { console.log(item); //输出:1,2 if (item === 2) { return true } else { return false } })
其他方法
1.使用for迴圈或for in 迴圈取代2.使用throw拋出例外try { [1, 2, 3, 4, 5].forEach(function(item) { if (item=== 2) throw item; console.log(item); }); } catch (e) {}3.使用判斷跑空迴圈
var tag; [1, 2, 3, 4, 5].forEach(function(item){ if(!tag){ console.log(item); if(item===2){ tag=true; } }這樣做有兩個問題,第一個問題,全局增加了一個tag變量,第二個問題,表面上看是終止了forEach循環,但是實際上循環的次數並沒有改變,只是在不滿足條件的時候callback什麼都沒執行而已,先解決第一個問題,如何刪除全域下新增的tag變數。實際上forEach還有第二個參數,表示callback的執行上下文,也就是在callback裡面this對應的值。因此我們可以講上下文設定成空對象,這個物件自然沒有tag屬性,因此存取this.tag的時候會得到undefined
[1, 2, 3, 4, 5].forEach(function(item){ if(!this.tag){ console.log(item); if(item===2){ this.tag=true; } } },{})4.修改索引
var array=[1, 2, 3, 4, 5] array.forEach(item=>{ if (item == 2) { array = array.splice(0); } console.log(item); })講解:
forEach的執行細節1.遍歷的範圍在第一次執行callback的時候就已經確定,所以在執行過程中去push內容,並不會影響遍歷的次數,這和for循環有很大區別,下面的兩個案例一個會造成死循環一個不會
var arr=[1,2,3,4,5] //会造成死循环的代码 for(var i=0;i<arr.length arr.foreach>arr.push('a'))</arr.length>2.如果已經存在的值被改變,則傳遞給callback 的值是forEach 遍歷到他們那一刻的值。
var arr=[1,2,3,4,5]; arr.forEach((item,index)=>{ console.log(`time ${index}`) arr[index+1]=`${index}a`; console.log(item) })3.已刪除的項目不會被遍歷到。如果已存取的元素在迭代時被刪除了(例如使用 shift()),之後的元素將被跳過。
var arr=[1,2,3,4,5]; arr.forEach((item,index)=>{ console.log(item) if(item===2){ arr.length=index; } })在滿足條件的時候將後面的值截掉,下次循環的時候照不到對應的值,循環就結束了,但是這樣操作會破壞原始的數據,因此我們可以使用一個小技巧,即將陣列從0開始截斷,然後重新賦值給陣列也就是array=array.splice(0)。 這篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的
JavaScript教學影片專欄!
以上是如何中斷forEach循環(詳細介紹)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

WebStorm Mac版
好用的JavaScript開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能