Wenn ich ein JS-Objekt habe wie:
var foo = { 'bar' : 'baz' }
Wenn ich weiß, foo
dass diese grundlegende Schlüssel- / Wertstruktur vorhanden ist, aber den Namen des Schlüssels nicht kennt, wie kann ich ihn am einfachsten erhalten? for ... in
? $.each()
? Ich hoffe es gibt etwas besseres ....
javascript
jquery
Sprugman
quelle
quelle
Antworten:
Wenn Sie alle Schlüssel erhalten möchten, wurde ECMAScript 5 eingeführt
Object.keys
. Dies wird nur von neueren Browsern unterstützt, aber die MDC-Dokumentation bietet eine alternative Implementierung (diefor...in
übrigens auch btw verwendet):Wenn Sie sowohl Schlüssel als auch Wert wollen,
for...in
ist dies natürlich die einzig vernünftige Lösung.quelle
p
gibt mir den Schlüssel, aber wie erhalte ich den Wert des Schlüssels? Vielen Dank.Sie würden innerhalb des Objekts mit einer for-Schleife iterieren:
Oder
quelle
foo[i]
sein"_proto_"
?foo[i]
wenn dies der Falli
istsome string
?Sie können auf jeden Schlüssel einzeln zugreifen, ohne wie folgt iterieren zu müssen:
quelle
const [firstKey, ...rest] = Object.keys(obj);
Angesichts Ihres Objekts:
Um zu erhalten
bar
, verwenden Sie:Um zu erhalten
baz
, verwenden Sie:Ein einzelnes Objekt annehmen
quelle
Ein Einzeiler für Sie:
quelle
Dies ist der einfachste und einfachste Weg. So machen wir das.
Jetzt können Sie die Objekte iterieren und auf Werte wie die folgenden zugreifen:
quelle
TypeError
wenn Sie erwarten, dass ein Schlüssel eine Zahl ist. Weil Schlüssel immer Zeichenfolgen sind.Ich hatte das gleiche Problem und das hat funktioniert
quelle
var value = person[key];
? Auf diese Weise müssen Sie den Schlüssel des Werts, den Sie abrufen möchten, nicht kennen.Siehe MDN
quelle
Ich sehe nichts anderes als
for (var key in foo)
.quelle
Es gibt keinen anderen Weg als
for ... in
. Wenn Sie das nicht verwenden möchten (vielleicht, weil es geringfügig ineffizient ist,hasOwnProperty
bei jeder Iteration testen zu müssen?), Verwenden Sie ein anderes Konstrukt, z. B. ein Array von KVPs:quelle
$.each()
Wie Sie bereits erwähnt haben , ist hier ein praktischer Ansatz, der in jQuery 1.6+ funktionieren würde:quelle
Der einfachste Weg ist, einfach Underscore.js zu verwenden:
Ja, Sie benötigen eine zusätzliche Bibliothek, aber es ist so einfach!
quelle
Object.keys () Die Object.keys () -Methode gibt ein Array der eigenen aufzählbaren Eigenschaften eines bestimmten Objekts in derselben Reihenfolge zurück, wie sie von einer for ... in-Schleife bereitgestellt wird (der Unterschied besteht darin, dass eine for-in-Schleife Eigenschaften auflistet auch in der Prototypenkette).
Object.values () Die Object.values () -Methode gibt ein Array der aufzählbaren Eigenschaftswerte eines bestimmten Objekts in derselben Reihenfolge zurück, die von einer for ... in-Schleife bereitgestellt wird (der Unterschied besteht darin, dass eine for-in-Schleife auflistet Eigenschaften auch in der Prototypenkette).
Für mehr gehen Sie bitte hier
quelle
Verwenden Sie für jede Schleife den Zugriff auf Schlüssel in Object oder Maps in Javascript
Hinweis: Sie können auch verwenden
es wird Ihnen diese Ausgabe geben:
[Bar];
quelle
Nun
$.each
ist ein Bibliothekskonstrukt, währendfor ... in
native js ist, was besser sein solltequelle
Sie können die Object.keys-Funktionalität verwenden, um folgende Schlüssel abzurufen:
quelle
Verwenden Sie zum Anzeigen als Zeichenfolge einfach:
quelle
bester Weg, um Schlüssel / Wert des Objekts zu erhalten.
quelle