これは実験段階の機能です。
この機能は複数のブラウザで開発中の状態にあります。互換性テーブルをチェックしてください。また、実験段階の機能の構文と挙動は、仕様変更に伴い各ブラウザの将来のバージョンで変更になる可能性があることに注意してください。
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-entries や es-shims/Object.entries 内にポリフィルがあります。
仕様
仕様 | 策定状況 | コメント |
---|---|---|
ECMAScript 2017 Draft (ECMA-262) Object.entries の定義 |
ドラフト | 初期定義。 |
ブラウザ実装状況
機能 | 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 を参考。