We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

これは実験段階の機能です。
この機能は複数のブラウザーで開発中の状態にあります。互換性テーブルをチェックしてください。また、実験段階の機能の構文と挙動は、仕様変更に伴い各ブラウザーの将来のバージョンで変更になる可能性があることに注意してください。

Object.entries() メソッドは、引数に与えたオブジェクトが所有する、列挙可能なプロパティの組 [key, value] からなる配列を返します。配列要素の順序は for...in ループによる順序と同じです(両者の違いとして、for-in ループではその上プロトタイプチェーン内のプロパティも列挙されます)。

構文

Object.entries(obj)

引数

obj
返されることになる列挙可能な所有プロパティの組 [key, value] を持つオブジェクト。

戻り値

引数に与えたオブジェクトが所有する、列挙可能なプロパティの組 [key, value] の配列。

説明

Object.entries() は、object に直接存在する列挙可能プロパティの組 [key, value] が配列要素に対応した配列を返します。プロパティの順序はオブジェクト内のプロパティに対してループさせた時の順序と同じになります。

使用例

var obj = { foo: "bar", baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]

// 配列様オブジェクト
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]

// ランダムなキー順序を持つ配列様オブジェクト
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.entries(an_obj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]

// 列挙可能でないプロパティ getFoo がある
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = "bar";
console.log(Object.entries(my_obj)); // [ ['foo', 'bar'] ]

// オブジェクトでない引数はオブジェクトへと型強制されます
console.log(Object.entries("foo")); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]

Object から Map への変換

new Map() コンストラクタは entries による反復処理に対応しています。 Object.entries を使うと、Object から Map へと簡単に変換できます。:

var obj = { foo: "bar", baz: 42 }; 
var map = new Map(Object.entries(obj));
console.log(map); // Map { foo: "bar", baz: 42 }

ポリフィル (Polyfill)

Object.entries をサポートしていない旧環境に互換性を持たせる場合は、tc39/proposal-object-values-entrieses-shims/Object.entries 内にポリフィルがあります。

仕様

仕様 策定状況 コメント
ECMAScript Latest Draft (ECMA-262)
Object.entries の定義
ドラフト 初期定義。

ブラウザ実装状況

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 51.0 [1] 47 (47) 未サポート 未サポート 未サポート [2]
機能 Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
基本サポート 未サポート 51.0 [1] 47.0 (47) 未サポート 未サポート 未サポート 51.0 [1]

[1] フラグ設定が必要。

[2] bug 150131 を参考。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: YuichiNukiyama, lv7777, x2357
最終更新者: YuichiNukiyama,