Inhaltsverzeichnis
Bitte unterstützen Sie dieses Buch: kaufen Sie es (PDF, EPUB, MOBI) oder spenden Sie
(Werbung, bitte nicht blockieren.)

7. Object.entries() und Object.values()

Dieses Kapitel beschreibt das ECMAScript 2017 Feature „Object.values/Object.entries“ von Jordan Harband.

7.1 Überblick

7.1.1 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

7.1.2 Object.values()

> Object.values({ one: 1, two: 2 })
[ 1, 2 ]

7.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

7.2.1 Einrichten von Maps über 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]]

7.2.2 FAQ: Object.entries()

7.3 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 ]
Weiter: 8. Neue Zeichenkettenmethoden: padStart und padEnd