コンテンツ一覧
この本をサポートしてください: 購入 (PDF、EPUB、MOBI) または 寄付
(広告: ブロックしないでください)

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

この章では、Jordan Harband 氏による ECMAScript 2017 の機能「Object.values/Object.entries」について説明します。

7.1 概要

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()

このメソッドには次のシグネチャがあります。

Object.entries(value : any) : Array<[string,any]>

JavaScript データ構造に key と値がある場合、エントリはキー-値ペアで、2 要素配列としてエンコードされます。Object.entries(x)x をオブジェクトに変換し、配列に含まれる列挙可能な独自文字列キー付きプロパティのエントリを返します。

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

キーがシンボルのプロパティは無視されます。

> Object.entries({ [Symbol()]: 123, foo: 'abc' });
[ [ 'foo', 'abc' ] ]

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.2.1 Object.entries() を使用してマップを設定する

Object.entries() では、オブジェクトを使用して Map を設定することもできます。これにより 2 要素配列の配列を使用する場合よりも簡潔になりますが、キーは文字列のみです。

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() には次のシグネチャがあります。

Object.values(value : any) : Array<any>

これは Object.entries() のように機能しますが、その名前が示すように、独自の列挙可能な文字列キー付きプロパティの値のみを返します。

> Object.values({ one: 1, two: 2 })
[ 1, 2 ]
次へ: 8. 新しい文字列メソッド: padStartpadEnd