JavaScript使用類似break機制中斷forEach循環(huán)的方法
更新時間:2018年11月13日 16:41:53 作者:ourjs
這篇文章主要介紹了JavaScript使用類似break機制中斷forEach循環(huán)的方法,需要的朋友可以參考下
JavaScript數組對象,有一個forEach方法,可枚舉每一個數組元素,但并不支持類似for循環(huán)的break語法,中斷循環(huán):
[1,2,3].forEach(function(item) {
// if(!item) break; 不支持
});
解決辦法,可拋出一個特殊異常,來中斷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;
}
也可復寫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);
});
總結
以上所述是小編給大家介紹的JavaScript使用類似break機制中斷forEach循環(huán)的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
您可能感興趣的文章:
- JS forEach跳出循環(huán)2種實現(xiàn)方法
- js中forEach,for in,for of循環(huán)的用法示例小結
- 詳談js中標準for循環(huán)與foreach(for in)的區(qū)別
- Javascript數組循環(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)的解決方案
相關文章
如何利用原生JS實現(xiàn)圖片預覽加上傳(前后端交互)
在做網站系統(tǒng)時經常會用到圖片上傳功能,用戶往往希望能看到自己上傳的圖片的樣子,下面這篇文章主要給大家介紹了關于如何利用原生JS實現(xiàn)圖片預覽加上傳,需要的朋友可以參考下2022-01-01
解析John Resig Simple JavaScript Inheritance代碼
上網也查了一下對些的理解說的都不是很清楚. 在翻閱的同時找到了一篇 分析這篇文章的文章 哈哈 分析的很詳細. (Join Resig 大師的 "Simple Inheritance" 使用了很多有意思的技巧) 如果你有時間, 并對此感興趣不訪好好看看. 我相信多少會有所收益的.2012-12-12

