JavaScript使用類似break機(jī)制中斷forEach循環(huán)的方法
JavaScript數(shù)組對象,有一個(gè)forEach方法,可枚舉每一個(gè)數(shù)組元素,但并不支持類似for循環(huán)的break語法,中斷循環(huán):
[1,2,3].forEach(function(item) {
// if(!item) break; 不支持
});
解決辦法,可拋出一個(gè)特殊異常,來中斷forEach循環(huán),原理:
var BreakException = {};
try {
[1, 2, 3].forEach(function(el) {
console.log(el);
if (el === 2) throw BreakException;
});
} catch (e) {
if (e !== BreakException) throw e;
}
也可復(fù)寫forEach方法:
// Use a closure to prevent the global namespace from be polluted.
(function() {
// Define StopIteration as part of the global scope if it
// isn't already defined.
if(typeof StopIteration == "undefined") {
StopIteration = new Error("StopIteration");
}
// The original version of Array.prototype.forEach.
var oldForEach = Array.prototype.forEach;
// If forEach actually exists, define forEach so you can
// break out of it by throwing StopIteration. Allow
// other errors will be thrown as normal.
if(oldForEach) {
Array.prototype.forEach = function() {
try {
oldForEach.apply(this, [].slice.call(arguments, 0));
}
catch(e) {
if(e !== StopIteration) {
throw e;
}
}
};
}
})();
使用
// Show the contents until you get to "2".
[0,1,2,3,4].forEach(function(val) {
if(val == 2)
throw StopIteration;
alert(val);
});
總結(jié)
以上所述是小編給大家介紹的JavaScript使用類似break機(jī)制中斷forEach循環(huán)的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- JS forEach跳出循環(huán)2種實(shí)現(xiàn)方法
- js中forEach,for in,for of循環(huán)的用法示例小結(jié)
- 詳談js中標(biāo)準(zhǔn)for循環(huán)與foreach(for in)的區(qū)別
- Javascript數(shù)組循環(huán)遍歷之forEach詳解
- 全面解析JavaScript里的循環(huán)方法之forEach,for-in,for-of
- js的for in循環(huán)和java里foreach循環(huán)的區(qū)別分析
- javascript forEach通用循環(huán)遍歷方法
- JavaScript 中的 `forEach` 無法退出循環(huán)的解決方案
相關(guān)文章
JavaScript寫的一個(gè)DIV 彈出網(wǎng)頁對話框
自己整理得一個(gè)JavaScript寫的一個(gè)DIV 彈出網(wǎng)頁對話框2009-08-08
JavaScript使用math.js進(jìn)行精確計(jì)算操作示例
這篇文章主要介紹了JavaScript使用math.js進(jìn)行精確計(jì)算操作,結(jié)合實(shí)例形式分析了開源庫math.js進(jìn)行高精度數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
如何利用原生JS實(shí)現(xiàn)圖片預(yù)覽加上傳(前后端交互)
在做網(wǎng)站系統(tǒng)時(shí)經(jīng)常會(huì)用到圖片上傳功能,用戶往往希望能看到自己上傳的圖片的樣子,下面這篇文章主要給大家介紹了關(guān)于如何利用原生JS實(shí)現(xiàn)圖片預(yù)覽加上傳,需要的朋友可以參考下2022-01-01
解析John Resig Simple JavaScript Inheritance代碼
上網(wǎng)也查了一下對些的理解說的都不是很清楚. 在翻閱的同時(shí)找到了一篇 分析這篇文章的文章 哈哈 分析的很詳細(xì). (Join Resig 大師的 "Simple Inheritance" 使用了很多有意思的技巧) 如果你有時(shí)間, 并對此感興趣不訪好好看看. 我相信多少會(huì)有所收益的.2012-12-12
JavaScript 如何計(jì)算文本的行數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了JavaScript 如何計(jì)算文本的行數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
基于JavaScript實(shí)現(xiàn)帶縮略圖的輪播效果
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)帶縮略圖的輪播效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
javascript數(shù)字?jǐn)?shù)組去重復(fù)項(xiàng)的實(shí)現(xiàn)代碼
console.log 不支持ie,下面的代碼需要在火狐中測試,不然會(huì)有問題。2010-12-12

