Ich habe mich gefragt, ob es eine Möglichkeit gibt, so etwas wie eine PHP- foreach
Schleife in JavaScript zu erstellen. Die Funktionalität, die ich suche, ist so etwas wie dieses PHP-Snippet:
foreach($data as $key => $value) { }
Ich habe mir die JS- for..in
Schleife angesehen, aber es scheint keine Möglichkeit zu geben, die anzugeben as
. Wenn ich dies mit einer 'normalen' for-Schleife ( for(var i = 0; i < data.length; i++
) mache , gibt es eine Möglichkeit, die Schlüssel => Wertepaare zu erfassen?
quelle
Object.entries
Anrufs langsamer ist . Ich habe allerdings keine Tests durchgeführt.hasOwnProperty
wird verwendet, um zu überprüfen, ob Sietarget
diese Eigenschaft wirklich haben, anstatt sie von ihrem Prototyp geerbt zu haben. Ein bisschen einfacher wäre:Es ist einfach überprüft , dass
k
keine Methode ist (als obtarget
istarray
es eine Menge von Methoden erhalten alarmierte, zum BeispielindexOf
,push
,pop
usw.)quelle
Object.keys
.Object.keys(target).forEach(function (key) { target[key]; });
.target
mit erstelltObject.create(null)
, Code sollte geändert werdentarget.hasOwnProperty(k)
->Object.prototype.hasOwnProperty.call(target,k)
k
,target
undproperty
? Für mich, Nicht-Javascripter dieser Bereich von undefinierten :)Niemand hat es erwähnt,
Object.keys
also werde ich es erwähnen.quelle
for of
tc39wiki.calculist.org/es6/for-ofdenn ... in wird für dich arbeiten.
In modernem JavaScript können Sie dies auch tun:
quelle
Die PHP-Syntax ist nur Zucker.
quelle
Ich gehe davon aus, dass Sie wissen, dass dies
i
der Schlüssel ist und dass Sie den Wert über erhalten könnendata[i]
(und nur eine Verknüpfung dafür wünschen).ECMAScript5 hat
forEach
[MDN] für Arrays eingeführt (anscheinend haben Sie ein Array):Die MDN-Dokumentation bietet einen Shim für Browser, die ihn nicht unterstützen.
Natürlich funktioniert dies nicht für Objekte, aber Sie können eine ähnliche Funktion für sie erstellen:
Da hast du die Frage mit getaggt jqueryjQuery stellt
$.each
[docs] bereit, die sowohl Array- als auch Objektstrukturen durchlaufen.quelle
forEach
, kein ObjektforEach
.for each
Syntax erlaubt .for each (let val in myObj) console.log(val);
.Sie können das
for..in
dafür verwenden.quelle
In Javascript verfügt jedes Objekt über eine Reihe integrierter Schlüssel-Wert-Paare mit Metainformationen. Wenn Sie alle Schlüssel-Wert-Paare für ein Objekt durchlaufen, durchlaufen Sie auch diese. Die Verwendung von hasOwnProperty () filtert diese heraus.
quelle
ES6 stellt Map.prototype.forEach (Rückruf) zur Verfügung, das so verwendet werden kann
quelle
myMap
?quelle
[['a', 1],['b',2],['c',3]]
. DasforEach
dekonstruiert jedes der Schlüssel / Wert-Arrays und setzt die beiden Variablen aufkey
undvalue
, um so verwendet zu werden, wie Sie die in-Funktion möchten - hier wird in ausgegebenconsole.log
.Sie können hierfür eine 'for in'-Schleife verwenden:
quelle
Unten sehen Sie ein Beispiel, das so nah wie möglich kommt.
Wenn Sie jQuery verwenden, lesen Sie: http://api.jquery.com/jQuery.each/
quelle
Wenn Sie Lodash verwenden , können Sie verwenden
_.forEach
quelle
In den letzten Jahren seit dieser Frage hat Javascript einige neue Funktionen hinzugefügt. Eine davon ist die Object.Entries- Methode.
Direkt aus MDN kopiert wird das folgende Code-Snippet
quelle
Ja, Sie können assoziative Arrays auch in Javascript verwenden:
quelle
quelle