3599 Stimmen

Wie kann ich ein JavaScript-Objekt in einer Schleife durchlaufen oder aufzählen?

Ich habe ein JavaScript-Objekt wie das folgende:

var p = {
    "p1": "value1",
    "p2": "value2",
    "p3": "value3"
};

Jetzt möchte ich eine Schleife durch alle p Elemente ( p1 , p2 , p3 ...) und ihre Schlüssel und Werte erhalten. Wie kann ich das tun?

Ich kann das JavaScript-Objekt bei Bedarf ändern. Mein ultimatives Ziel ist es, eine Schleife durch einige Schlüssel-Wert-Paare zu ziehen, und wenn möglich, möchte ich die Verwendung von eval .

-1voto

Randhir Rawatlal Punkte 195

Wenn Ihre Anwendung in der String-Erstellung ist, ist eine schöne Kombination mit Object.keys, implode und die .map-Array-Methode. Zum Beispiel, wenn wir ein json Objekt haben wie

var data = {
    key1: 10,
    key2: 'someString',
    key3: 3000
}

und wir würden gerne Folgendes generieren "Die Werte sind key1 = 10, key2 = someString, key3 = 3000."

Wir können dies in einer einzigen Codezeile erreichen:

var str = `The values are ${implode(', ', Object.keys(data).map(function(key){return `${key} = ${data[key]}`}))}.`;

Implode reduziert ein Array auf eine Zeichenkette mit einem Trennzeichen (erstes Argument), das zwischen den Elementen eingefügt wird; .map iteriert durch ein Array und gibt ein Array zurück, und Object.keys wurde von den anderen Antworten bereits sehr gut erläutert.

-3voto

Marius Bakowski Punkte 115

Seit ES2015 können Sie die for-Schleife verwenden, um direkt auf das Element zuzugreifen:

// before ES2015
for(var key of elements){
  console.log(elements[key]);
}

// ES2015
for(let element of elements){
  console.log(element);
}

Ich hoffe, das hilft jemandem.

2 Stimmen

Das ist nicht nur nicht hilfreich, sondern auch nicht korrekt. Für...von funktioniert nur, wenn Elemente definiert einen Iterator. Das gilt für Arrays, Sets und Maps, aber nicht für Objects.

0 Stimmen

-6voto

B.F. Punkte 453

Weil der Fragesteller [' Ziel ist es, eine Schleife durch einige Schlüssel-Wert-Paare zu ziehen '] und schließlich nicht nach einer Schleife suchen.

var p ={"p1":"value1","p2":"value2","p3":"value3"};
if('p1' in p){
  var val=p['p1'];
  ...
}

3 Stimmen

Nein! Er schrieb "Jetzt möchte ich eine Schleife durch alle p Elemente machen", also braucht er wirklich eine Schleife wie in seiner akzeptierten Antwort.

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