摘要:前文沒怎么理解的方法的童鞋使用時(shí)很容易遇到一個(gè)問題就是,當(dāng)你想要跳出這個(gè)循環(huán)時(shí),發(fā)現(xiàn)是不起作用的。這里可用于跳出循環(huán)。
前文
沒怎么理解JavaScript的forEach方法的童鞋使用forEach時(shí)很容易遇到一個(gè)問題就是,當(dāng)你想要跳出這個(gè)循環(huán)時(shí),發(fā)現(xiàn)return、break是不起作用的。下面我們來分析一下原因以及解決方法。
正文首先我們要知道的是forEach方法的機(jī)制是對(duì)數(shù)組的每個(gè)有效元素執(zhí)行一次callback函數(shù),然后return、break等只作用于一個(gè)函數(shù),也就造成了無法跳出forEach循環(huán)的問題,而是只能跳過當(dāng)前函數(shù)的執(zhí)行。
解決方案 曲線救國(SegmentFault)通過使用拋出異常的方式可以中止。
function foo(arr ,item){ var BreakException= {}; try { arr.forEach(function(i) { if(i === item) throw BreakException; console.log(i); }); } catch(e) { if (e!==BreakException) throw e; } }Array.some&Array.every
正常的使用環(huán)境:如果是測(cè)試一個(gè)數(shù)組里的元素是否符合某條件,且需要返回一個(gè)布爾值則應(yīng)該使用這兩個(gè)方法。這里可用于跳出循環(huán)。
function foo(arr ,item){ arr.some(function(i) { if(i === item) return true; console.log(i); }); }
function foo(arr ,item){ arr.every(function(i) { if(i === item) return false; console.log(i); }); }循規(guī)蹈矩
如果你需要這樣,使用forEach()方法是錯(cuò)誤的,你可以用一個(gè)簡(jiǎn)單的循環(huán)作為替代。—— MDN
對(duì)于多重for循環(huán),我們跳出循環(huán)需要特殊處理一下:
xh: //首先將循環(huán)命名 for(var i=0;i<10;i++){ for(var j=0;j<5;j++){ if(i==3 && j==4){ break xh; //跳出循環(huán)xh } } }參考
https://segmentfault.com/q/10...
https://developer.mozilla.org...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/93353.html
摘要:中如何跳出循環(huán)結(jié)束遍歷直接拋結(jié)論,下表是中常用的實(shí)現(xiàn)循環(huán)遍歷的方法的跳出結(jié)束遍歷的辦法,經(jīng)過測(cè)試后的總結(jié)。遍歷中返回才會(huì)退出執(zhí)行,而則需要返回才會(huì)退出執(zhí)行。 JavaScript中如何跳出循環(huán)/結(jié)束遍歷 直接拋結(jié)論,下表是JS中常用的實(shí)現(xiàn)循環(huán)遍歷的方法的跳出/結(jié)束遍歷的辦法,經(jīng)過測(cè)試后的總結(jié)。可能各位大佬還有其他的辦法,我在此表示大佬NB。 序號(hào) 方法 break continue...
摘要:解決方案用一個(gè)臨時(shí)變量存儲(chǔ)結(jié)果,當(dāng)條件成立相同時(shí)將結(jié)果改為這樣雖然能獲得正確的返回值,但卻無法阻止的循環(huán)想來應(yīng)該是用在歷遍數(shù)組元素來做一些操作,像這樣的應(yīng)該用循環(huán)比較好一些 在寫一個(gè)比較數(shù)組對(duì)象中是否存在一個(gè)對(duì)象,存在返回true,失敗返回false.在return時(shí),發(fā)現(xiàn)并沒有退出方法,自己測(cè)試了一下. 首先先寫一個(gè)數(shù)組對(duì)象,然后用angularjs的forEach方法循環(huán)比較,當(dāng)存...
摘要:利用捕獲錯(cuò)誤,在里滿足條件時(shí)拋出錯(cuò)誤滿足條件拋出錯(cuò)誤,立即跳出循環(huán)語句允許我們創(chuàng)建自定義錯(cuò)誤。直接是捕獲不到的。 //利用 try catch 捕獲錯(cuò)誤,在forEach里滿足條件時(shí)拋出錯(cuò)誤 try{ arr.forEach(item => { if(true){ //滿足條件拋出錯(cuò)誤,立即跳出循環(huán) //throw 語句允許我們創(chuàng)建自定...
摘要:是中遍歷數(shù)組的方法,大部分人常用循環(huán)來遍歷數(shù)組,現(xiàn)在我們來看一下的用法。兼容性和的類型都有的函數(shù)。 forEach是javascript中遍歷數(shù)組的方法,大部分人常用for()循環(huán)來遍歷數(shù)組,現(xiàn)在我們來看一下forEach的用法。 兼容性 Firefox 和Chrome 的Array 類型都有forEach的函數(shù)。使用如下: var arryAll = []; arryAll...
摘要:和循環(huán)遍歷器意義為四種數(shù)據(jù)集合,提供統(tǒng)一的接口機(jī)制來處理所有不同的數(shù)據(jù)結(jié)構(gòu)。調(diào)用函數(shù)返回一個(gè)遍歷器對(duì)象,代表函數(shù)的內(nèi)部指針。以后,每次調(diào)用遍歷器對(duì)象的方法,就會(huì)返回一個(gè)有著和兩個(gè)屬性的對(duì)象。 Iterator 和 for...of 循環(huán) Iterator(遍歷器)意義 為Array、Object、Map、Set四種數(shù)據(jù)集合,提供統(tǒng)一的接口機(jī)制來處理所有不同的數(shù)據(jù)結(jié)構(gòu) 。 任何數(shù)據(jù)結(jié)構(gòu),...
閱讀 1052·2021-11-18 13:23
閱讀 761·2021-11-08 13:16
閱讀 873·2021-10-11 10:58
閱讀 3522·2021-09-22 15:26
閱讀 1750·2021-09-08 10:42
閱讀 1829·2021-09-04 16:45
閱讀 1745·2019-08-30 15:54
閱讀 2577·2019-08-30 13:45