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"
};

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

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

Lösung

Sie können die "for-in"-Schleife verwenden, wie von anderen gezeigt. Allerdings müssen Sie auch sicherstellen, dass der Schlüssel, den Sie erhalten, eine tatsächliche Eigenschaft eines Objekts ist und nicht aus dem Prototyp stammt.

Hier ist das Snippet:

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

for (var key in p) {
    if (p.hasOwnProperty(key)) {
        console.log(key + " -> " + p[key]);
    }
}

Für-von mit Object.keys() alternativ:

var p = {
    0: "value1",
    "b": "value2",
    key: "value3"
};

for (var key of Object.keys(p)) {
    console.log(key + " -> " + p[key])
}

Beachten Sie die Verwendung von for-of anstelle von for-in, da es sonst bei benannten Eigenschaften einen undefinierten Rückgabewert liefert, und Object.keys() stellt sicher, dass nur die eigenen Eigenschaften des Objekts verwendet werden und nicht die Eigenschaften der gesamten Prototypenkette

Kommentare (27)

Sie können einfach darüber iterieren wie:

for (var key in p) {
  alert(p[key]);
}

Beachten Sie, dass "key" nicht den Wert der Eigenschaft annimmt, sondern nur ein Indexwert ist.

Kommentare (2)
for(key in p) {
  alert( p[key] );
}

Hinweis: Sie können dies über Arrays tun, aber Sie werden auch über die "Länge" und andere Eigenschaften iterieren.

Kommentare (5)