Ich möchte die Schlüssel eines JavaScript-Objekts als Array erhalten, entweder in jQuery oder in reinem JavaScript.
Gibt es einen weniger ausführlichen Weg als diesen?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
javascript
ecmascript-5
Richard
quelle
quelle
if(foo.hasOwnProperty(key))
würde ich das tun. Oder verwenden$.map
.for var in x
Schleifen durcheinander bringenAntworten:
Verwendung
Object.keys
:Dies ist eine ES5-Funktion. Dies bedeutet, dass es in allen modernen Browsern funktioniert, jedoch nicht in älteren Browsern .
Der ES5-Shim hat eine Implementierung, die
Object.keys
Sie stehlen könnenquelle
Sie können jQuery's verwenden
$.map
.quelle
each
wenn du etwas mit ihnen machst.$.each(foo, function(index, value){/* do something with index */});
Dies ist natürlich
Object.keys()
der beste Weg, um die Schlüssel eines Objekts zu erhalten. Wenn es in Ihrer Umgebung nicht verfügbar ist, kann es mithilfe von Code wie in Ihrem Beispiel trivial angepasst werden (außer Sie müssen berücksichtigen, dass Ihre Schleife im GegensatzObject.keys()
zum Verhalten über alle Eigenschaften in der Prototypenkette iteriert ).Ihr Beispielcode ...
jsFiddle .
... könnte geändert werden. Sie können die Zuordnung direkt im variablen Teil vornehmen .
jsFiddle .
Natürlich unterscheidet sich dieses Verhalten von dem, was
Object.keys()
tatsächlich funktioniert ( jsFiddle ). Sie können einfach die Unterlegscheibe in der MDN-Dokumentation verwenden .quelle
var keys = [], i = 0; for (keys[i++] in foo) {}
+1hasOwnProperty()
überprüft werden.Ich weiß nicht, wie ausführlich es ist, aber ich wurde durch die Einzeiler-Anfrage dazu inspiriert, das Folgende in eine Zeile zu zwingen, weiß aber nicht, wie pythonisch es ist;)
quelle
var enumerableKeysOnThePrototypeChain
;)for (keys[i++] in foo) {}
), weil Sie immer noch spielenArray.push()
(ganz zu schweigen von der Deklaration einer ganzen Funktion). Eine pythonische Implementierung sollte so weit wie möglich vom impliziten Verständnis abhängen, andernfalls sollte ein Lambda-Ausdruck verwendet werden.Falls Sie hier nach etwas suchen, um die Schlüssel eines verschachtelten Objekts mit n Tiefen als flaches Array aufzulisten:
quelle
Zusammenfassung
Zum Abrufen aller Schlüssel eines Objekts können Sie verwenden
Object.keys()
.Object.keys()
Nimmt ein Objekt als Argument und gibt ein Array aller Schlüssel zurück.Beispiel:
Im obigen Beispiel speichern wir ein Array von Schlüsseln in der Schlüsselkonstante. Wir können dann einfach auf die Anzahl der Eigenschaften des Objekts zugreifen, indem wir die Länge des Schlüsselarrays überprüfen.
Erhalten der Werte mit:
Object.values()
Die komplementäre Funktion von
Object.keys()
istObject.values()
. Diese Funktion verwendet ein Objekt als Argument und gibt ein Array von Werten zurück. Zum Beispiel:quelle
Wenn Sie sich für Underscore.js entscheiden, sollten Sie dies besser tun
quelle