Wie man über ein JavaScript-Objekt iteriert?
Ich habe ein Objekt in JavaScript:
{
abc: '...',
bca: '...',
zzz: '...',
xxx: '...',
ccc: '...',
//...
}
Ich möchte an einem for
- Schleife, um seine Eigenschaften. Und ich will zu Durchlaufen, die es in teilen (nicht alle Objekt-Eigenschaften auf einmal).
Mit einer einfachen Reihe, ich kann es tun, mit einem standard - for
Schleife:
for (i = 0; i < 100; i++) { ... } //first part
for (i = 100; i < 300; i++) { ... } //second
for (i = 300; i < arr.length; i++) { ... } //last
Aber wie man es mit Objekten?
InformationsquelleAutor der Frage nkuhta | 2013-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bei den meisten Objekten verwenden Sie
for .. in
:Um keine Protokollierung vererbten Eigenschaften, überprüfen Sie mit hasOwnProperty :
Das MDN-Dokumentation erklärt allgemein, wie man mit Objekten und deren Eigenschaften.
Wenn Sie wollen, es zu tun "in Blöcken", die beste ist, um zu extrahieren die Schlüssel in einem array. Wie, die Reihenfolge ist nicht garantiert, das ist der richtige Weg. In modernen Browsern, die Sie verwenden können,
Mehr kompatibel ist, solltest du besser so machen :
Dann können Sie iterativ auf Ihre Eigenschaften index:
yourobject[keys[i]]
:InformationsquelleAutor der Antwort Denys Séguret
Hier ist eine weitere iteration Lösung für moderne Browser:
Oder noch kürzer:
Allerdings muss man Bedenken, dass die Eigenschaften in JavaScript-Objekt sind nicht sortiert, d.h. Sie haben auch keine Ordnung.
InformationsquelleAutor der Antwort VisioN
Mit der neuen ES6/ES2015 Funktionen, die Sie nicht haben, um mit einem Objekt nicht mehr zur Iteration über einen hash. Sie können eine Anzeigen. Javascript-Maps-halten Sie Schlüssel in der insertion order, d.h. man kann Durchlaufen, ohne zu prüfen, die hasOwnProperty, das war immer wirklich ein hack.
Durchlaufen einer Karte:
oder verwenden Sie forEach:
InformationsquelleAutor der Antwort Paul
Die einzig zuverlässige Weg dies zu tun wäre, zu dem das Objekt gespeichert werden die Daten auf 2 arrays, ein-Tasten und eine für die Daten:
Können Sie dann Durchlaufen der arrays, wie Sie normalerweise würden:
Ich bin nicht mit
Object.keys(obj)
weil IE 9+.InformationsquelleAutor der Antwort Cerbrus
Mit
Object.entries
Sie so etwas tun.Objekt.Einträge () - Methode gibt ein array mit einem Objekt der eigenen enumerable-Eigenschaft [key, value]
So können Sie iterieren über das Objekt und haben
key
undvalue
für jedes Objekt und bekommen so etwas wie dieses.oder so
Für eine Referenz haben Sie einen Blick auf die MDN docs für Objekt-Einträge
InformationsquelleAutor der Antwort Adeel Imran
Wollten Sie Durchlaufen das gesamte Objekt auf einmal könnten Sie
for in
Schleife:Aber wenn Sie teilen möchten, das Objekt in Teile, in der Tat Sie nicht. Es gibt keine Garantie dafür, dass Eigenschaften im Objekt-sind in keiner bestimmten Reihenfolge. Daher, kann ich mir zwei Lösungen.
Erste von Ihnen ist die "entfernen" - schon gelesen-Eigenschaften:
Andere Lösung, die ich denken kann, ist die Verwendung von Arrays von Arrays anstelle des Objekts:
Dann standard
for
- Schleife arbeiten.InformationsquelleAutor der Antwort Michał Miszczyszyn
->wenn wir iterieren über ein JavaScript-Objekt mit und finden Sie Schlüssel eines Arrays von
objects
InformationsquelleAutor der Antwort ashishdudhat
Wirklich ein PITA ist dies nicht Teil von standard-Javascript.
Hinweis: ich wechselte die callback-Parameter (value,key) und fügte ein drittes Objekt, um die API konsistente anderen APIs.
Verwenden Sie es wie diese
InformationsquelleAutor der Antwort Steven Spungin
InformationsquelleAutor der Antwort HovyTech
Kam ich endlich mit ein handliches Dienstprogramm-Funktion, mit der eine einheitliche Schnittstelle zum Durchlaufen der Objekte, Strings, Arrays, TypedArrays, Karten, Sets, (alle Iterables).
https://github.com/alrik/iterate-javascript
InformationsquelleAutor der Antwort Alrik Zachert