Heim >Web-Frontend >js-Tutorial >Javascript-Array-Schleifendurchlauf (forEach ausführliche Erklärung)
In diesem Artikel wird hauptsächlich die detaillierte Erklärung von forEach für das Durchlaufen von Javascript-Arrays vorgestellt. Es ist sehr hilfreich, um forEach zu lernen.
1.js-Array-Schleifendurchlauf.
Array-Schleifenvariable, das erste, was mir in den Sinn kommt, ist for(var i=0;i
Darüber hinaus können Sie auch die einfachere forEach-Methode
2.forEach-Funktion verwenden.
Die Array-Typen von Firefox und Chrome verfügen beide über forEach-Funktionen. Verwenden Sie es wie folgt:
<!--Add by oscar999--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Author" CONTENT="oscar999"> </HEAD> <BODY> <script> var arryAll = []; arryAll.push(1); arryAll.push(2); arryAll.push(3); arryAll.push(4); //匿名方式 arryAll.forEach(function(e){ alert(e); }) function t1(arg){alert(arg);} //非匿名方式 arryAll.forEach(t1,arryAll); </script> </BODY> </HTML>
Der obige Code funktioniert jedoch im IE nicht ordnungsgemäß.
Da das Array des IE diese Methode nicht hat
alert(Array.prototype.forEach);
Die Ausführung des obigen Satzes führt zu „undefiniert“, was Folgendes bedeutet in Es gibt keine forEach-Methode im Array im IE.
3. Machen Sie den IE mit der forEach-Methode kompatibel
Da das Array des IE keine forEach-Methode hat, werden wir diese Prototypmethode manuell hinzufügen.
//Array.forEach implementation for IE support.. //https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach if (!Array.prototype.forEach) { Array.prototype.forEach = function(callback, thisArg) { var T, k; if (this == null) { throw new TypeError(" this is null or not defined"); } var O = Object(this); var len = O.length >>> 0; // Hack to convert O.length to a UInt32 if ({}.toString.call(callback) != "[object Function]") { throw new TypeError(callback + " is not a function"); } if (thisArg) { T = thisArg; } k = 0; while (k < len) { var kValue; if (k in O) { kValue = O[k]; callback.call(T, kValue, k, O); } k++; } }; }
Eine ausführliche Einführung finden Sie unter:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects /Array/ forEach
4. Wie kann ich aus der Schleife ausbrechen?
Js In diesem Fall kann forEach nicht continue, break verwenden. Sie können die folgenden zwei Methoden verwenden:
1. if-Anweisungssteuerung
2. Return-Anweisungssteuerung (true zurückgeben oder false zurückgeben)
Tatsächlich hat return eine ähnliche Funktion, um fortzufahren
Das Folgende Ein Beispiel besteht darin, die Vielfachen von 2 und 3 im Array herauszunehmen
<!--Add by oscar999--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Author" CONTENT="oscar999"> </HEAD> <BODY> <script> if (!Array.prototype.forEach) { Array.prototype.forEach = function(callback, thisArg) { var T, k; if (this == null) { throw new TypeError(" this is null or not defined"); } var O = Object(this); var len = O.length >>> 0; // Hack to convert O.length to a UInt32 if ({}.toString.call(callback) != "[object Function]") { throw new TypeError(callback + " is not a function"); } if (thisArg) { T = thisArg; } k = 0; while (k < len) { var kValue; if (k in O) { kValue = O[k]; callback.call(T, kValue, k, O); } k++; } }; } var arryAll = []; arryAll.push(1); arryAll.push(2); arryAll.push(3); arryAll.push(4); arryAll.push(5); arryAll.push(6); arryAll.push(7); var arrySpecial = []; arryAll.forEach(function(e){ if(e%2==0) { arrySpecial.push(e); }else if(e%3==0) { arrySpecial.push(e); } }) </script> </BODY> </HTML>
Verwenden Sie return, um das oben Gesagte zu erreichen effect
arryAll.forEach(function(e){ if(e%2==0) { www.jb51.net arrySpecial.push(e); return; } if(e%3==0) { arrySpecial.push(e); return; } })
Was das Schreiben eines Effekts ähnlich wie break angeht, gibt es noch keinen besseren Weg.
Persönliche Meinung: Ob in Java- oder C#-Syntax, forEach soll alle Werte durchlaufen
Ich habe gesucht und einige sagten, dass die Rückgabe „false“ erreicht werden kann Wenn es sich um einen Versuch handelt, ist der Effekt von „return false“ derselbe wie „return“ und der Effekt von „return true“ ist derselbe.
Der folgende Testcode wurde von mir selbst hinzugefügt.
var arryAll = []; arryAll.push(1); arryAll.push(2); arryAll.push(3); arryAll.push(4); arryAll.push(5); arryAll.push(6); arryAll.push(7); arryAll.forEach(function(e){ alert(e); if(e>3) return false; });
Das oben Gesagte habe ich für Sie zusammengestellt. Ich hoffe, es wird Ihnen in Zukunft hilfreich sein.
Verwandte Artikel:
js-Code zum Durchlaufen der Eigenschaften der object_javascript-Fähigkeiten
JS-Code zum Durchlaufen von DOM-Instanzen
JS-Code zum Durchlaufen der Attribute von Objekten
Das obige ist der detaillierte Inhalt vonJavascript-Array-Schleifendurchlauf (forEach ausführliche Erklärung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!