Angenommen, Sie haben ein Javascript-Objekt wie dieses:
var data = { foo: 'bar', baz: 'quux' };
Sie können auf die Eigenschaften über den Eigenschaftsnamen zugreifen:
var foo = data.foo;
var baz = data["baz"];
Aber ist es möglich, diese Werte zu erhalten, wenn Sie den Namen der Eigenschaften nicht kennen? Macht es die ungeordnete Natur dieser Eigenschaften unmöglich, sie auseinander zu halten?
In meinem Fall denke ich speziell an eine Situation, in der eine Funktion eine Reihe von Name-Wert-Paaren akzeptieren muss, die Namen der Eigenschaften sich jedoch ändern können.
Meine Gedanken dazu sind, die Namen der Eigenschaften zusammen mit den Daten an die Funktion zu übergeben, aber das fühlt sich wie ein Hack an. Ich würde es vorziehen, wenn möglich mit Selbstbeobachtung zu tun.
quelle
Alte Versionen von JavaScript (<ES5) erfordern die Verwendung einer
for..in
Schleife:ES5 führt Object.keys und Array # forEach ein , was dies etwas einfacher macht:
ES2017 führt ein
Object.values
undObject.entries
.quelle
quelle
Oft möchten Sie die besonderen Eigenschaften einer Instanz eines Objekts untersuchen, ohne alle gemeinsamen Prototypmethoden und -eigenschaften:
quelle
Dadurch werden alle Eigenschaften und ihre Werte (geerbt oder besessen, aufzählbar oder nicht) in einem neuen Objekt abgerufen. Originalobjekt ist unberührt. Jetzt kann ein neues Objekt mit durchlaufen werden
quelle
quelle
.hasOwnProperty()
wenn Sie for in verwenden, um ein Objekt zu iterieren.hasOwnProperty()
Methode gibt eineboolean
Angabe zurück, ob das Objekt die angegebene Eigenschaft als eigene Eigenschaft hat (im Gegensatz zur Vererbung) . siehe dieses BeispielSie können Object.keys () verwenden , "das ein Array der eigenen aufzählbaren Eigenschaftsnamen eines bestimmten Objekts in derselben Reihenfolge zurückgibt, wie wir es mit einer normalen Schleife erhalten."
Sie können jedes Objekt anstelle von
stats
:quelle
Object.keys( stats )[key]
macht keinen Sinn, wird es immer seinundefined
.quelle