JavaScript數組對象,有一個forEach方法,可枚舉每一個數組元素,但并不支持類似for循環的break語法,中斷循環:
[1,2,3].forEach(function(item) { // if(!item) break; 不支持});
解決辦法,可拋出一個特殊異常,來中斷forEach循環,原理:
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循環的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!
新聞熱點
疑難解答