這篇文章帶給大家的內容是關於如何中斷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 < arr.length; i++) { const rs = (function(item) { console.log(item); if (item > 2) return false; })(arr[i]) }
如何變通跳出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) {}
var tag; [1, 2, 3, 4, 5].forEach(function(item){ if(!tag){ console.log(item); if(item===2){ tag=true; } }
[1, 2, 3, 4, 5].forEach(function(item){ if(!this.tag){ console.log(item); if(item===2){ this.tag=true; } } },{})
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;i++){ arr.push('a') } //不会造成死循环 arr.forEach(item=>arr.push('a'))
var arr=[1,2,3,4,5]; arr.forEach((item,index)=>{ console.log(`time ${index}`) arr[index+1]=`${index}a`; console.log(item) })
var arr=[1,2,3,4,5]; arr.forEach((item,index)=>{ console.log(item) if(item===2){ arr.length=index; } })
JavaScript教學影片專欄!
以上是如何中斷forEach循環(詳細介紹)的詳細內容。更多資訊請關注PHP中文網其他相關文章!