549 Stimmen

For..In-Schleifen in JavaScript - Schlüssel-Wert-Paare

Ich habe mich gefragt, ob es eine Möglichkeit gibt, so etwas wie eine PHP foreach Schleife in JavaScript. 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, aber es scheint keine Möglichkeit zu geben, die as . Wenn ich dies mit einer "normalen" for-Schleife mache ( for(var i = 0; i < data.length; i++ ), gibt es eine Möglichkeit, die Schlüssel => Wertpaare zu erfassen?

565voto

J0HN Punkte 25228
for (var k in target){
    if (target.hasOwnProperty(k)) {
         alert("Key is " + k + ", value is " + target[k]);
    }
}

hasOwnProperty wird verwendet, um zu prüfen, ob Ihr target diese Eigenschaft tatsächlich besitzt und nicht von seinem Prototyp geerbt hat. Ein bisschen einfacher wäre es:

for (var k in target){
    if (typeof target[k] !== 'function') {
         alert("Key is " + k + ", value is" + target[k]);
    }
}

Sie prüft lediglich, ob k keine Methode ist (als ob target es array erhalten Sie eine Vielzahl von Methoden, z. B. indexOf , push , pop ,usw.)

447voto

Francesco Casula Punkte 24332

Wenn Sie Folgendes verwenden können ES6 nativ oder mit Babel (js-Compiler), dann könnten Sie Folgendes tun:

const test = {a: 1, b: 2, c: 3};

for (const [key, value] of Object.entries(test)) {
  console.log(key, value);
}

Dadurch wird diese Ausgabe gedruckt:

a 1
b 2
c 3

En Object.entries() Methode gibt ein Array der eigenen aufzählbaren Eigenschaft eines bestimmten Objekts zurück [key, value] Paare, in der gleichen Reihenfolge wie bei einer for...in Schleife (mit dem Unterschied, dass eine for-in-Schleife auch Eigenschaften in der Prototypenkette aufzählt) .

345voto

goatslacker Punkte 9682

Keiner hat erwähnt Object.keys deshalb erwähne ich es.

Object.keys(obj).forEach(function (key) {
   // do something with obj[key]
});

145voto

Paul Punkte 134955

für...in wird für Sie arbeiten.

for( var key in obj ) {
  var value = obj[key];
}

In modernem JavaScript können Sie dies auch tun:

for ( const [key,value] of Object.entries( obj ) ) {

}

72voto

Zirak Punkte 37644
var obj = {...};
for (var key in obj) {
    var value = obj[key];

}

Die php-Syntax ist nur Zucker.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X