Hinzufügen der Verwendung Reflect.ownKeys(obj)
und Iteration von ES2015 über die Eigenschaften über einen Iterator.
Zum Beispiel:
let obj = { a: 'Carrot', b: 'Potato', Car: { doors: 4 } };
kann durch iteriert werden
// logs each key
Reflect.ownKeys(obj).forEach(key => console.log(key));
Wenn Sie direkt über die Werte der Schlüssel eines Objekts iterieren möchten, können Sie einen definieren iterator
, genau wie die Standarditeratoren von JavaScipts für Zeichenfolgen, Arrays, typisierte Arrays, Map und Set.
JS versucht, über die Standard-Iterator-Eigenschaft zu iterieren, die als definiert werden muss Symbol.iterator
.
Wenn Sie in der Lage sein möchten, alle Objekte zu durchlaufen, können Sie es als Prototyp von Object hinzufügen:
Object.prototype[Symbol.iterator] = function*() {
for(p of Reflect.ownKeys(this)){ yield this[p]; }
}
Auf diese Weise können Sie die Werte eines Objekts mit einer for ... of-Schleife durchlaufen, z. B.:
for(val of obj) { console.log('Value is:' + val ) }
Achtung : Zum Zeitpunkt des Schreibens dieser Antwort (Juni 2018) unterstützen alle anderen Browser außer IE Generatoren und for...of
Iterationen überSymbol.iterator
if (typeof(obj[propt]) === 'object') {
/ * Mach es noch einmal * /}