Object.entries() und Object.values() Dieses Kapitel beschreibt das ECMAScript 2017 Feature „Object.values/Object.entries“ von Jordan Harband.
Object.entries() let obj = { one: 1, two: 2 };
for (let [k,v] of Object.entries(obj)) {
console.log(`${JSON.stringify(k)}: ${JSON.stringify(v)}`);
}
// Output:
// "one": 1
// "two": 2
Object.values() > Object.values({ one: 1, two: 2 })
[ 1, 2 ]
Object.entries() Diese Methode hat die folgende Signatur
Object.entries(value : any) : Array<[string,any]>
Wenn eine JavaScript-Datenstruktur Schlüssel und Werte hat, dann ist ein Eintrag ein Schlüssel-Wert-Paar, das als ein 2-elementiges Array kodiert ist. Object.entries(x) konvertiert x zu einem Objekt und gibt die Einträge seiner aufzählbaren eigenen zeichenkettenbasierten Eigenschaften in einem Array zurück.
> Object.entries({ one: 1, two: 2 })
[ [ 'one', 1 ], [ 'two', 2 ] ]
Eigenschaften, deren Schlüssel Symbole sind, werden ignoriert.
> Object.entries({ [Symbol()]: 123, foo: 'abc' });
[ [ 'foo', 'abc' ] ]
Object.entries() gibt uns endlich eine Möglichkeit, über die Eigenschaften eines Objekts zu iterieren (lesen Sie hier, warum Objekte standardmäßig nicht iterierbar sind).
let obj = { one: 1, two: 2 };
for (let [k,v] of Object.entries(obj)) {
console.log(`${JSON.stringify(k)}: ${JSON.stringify(v)}`);
}
// Output:
// "one": 1
// "two": 2
Object.entries() Object.entries() ermöglicht es Ihnen auch, eine Map über ein Objekt einzurichten. Dies ist prägnanter als die Verwendung eines Arrays von 2-elementigen Arrays, aber Schlüssel können nur Zeichenketten sein.
let map = new Map(Object.entries({
one: 1,
two: 2,
}));
console.log(JSON.stringify([...map]));
// [["one",1],["two",2]]
Object.entries() Object.entries() ein Array und kein Iterator?Object.keys(), nicht z. B. Map.prototype.entries().Object.entries() nur die aufzählbaren eigenen zeichenkettenbasierten Eigenschaften zurück?Object.keys(). Diese Methode ignoriert ebenfalls Eigenschaften, deren Schlüssel Symbole sind. Möglicherweise gibt es zukünftig eine Methode Reflect.ownEntries(), die alle eigenen Eigenschaften zurückgibt.Object.values() Object.values() hat die folgende Signatur
Object.values(value : any) : Array<any>
Sie funktioniert ähnlich wie Object.entries(), gibt aber, wie der Name schon sagt, nur die Werte der eigenen aufzählbaren zeichenkettenbasierten Eigenschaften zurück.
> Object.values({ one: 1, two: 2 })
[ 1, 2 ]