Object.fromEntries()

Object.fromEntries() メソッドは、キーと値の組み合わせのリストをオブジェクトに変換します。

構文

Object.fromEntries(iterable);

引数

iterable
反復処理プロトコルを実装している ArrayMap やその他の反復処理可能なオブジェクトです。

返値

反復可能な項目から作成されたプロパティを持つ新しいオブジェクト。

説明

Object.fromEntries() メソッドは、キーと値のリストを取り、これらの項目から作成されたプロパティを持つ新しいオブジェクトを返します。引数の iterable@@iterator メソッドを実装しており、オブジェクトのような二つの要素を持ち、最初の要素がプロパティキーとして使われる値であり、次の要素がプロパティのキーに関連付けられる値であるようなオブジェクトであることが求められます。

Object.fromEntries()Object.entries() の逆の動作をします。

Map から Object への変換

Object.fromEntries では、 MapObject に変換することができます。

const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
const obj = Object.fromEntries(map);
console.log(obj); // { foo: "bar", baz: 42 }

Array から Object への変換

Object.fromEntries では、 ArrayObject に変換することができます。

const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
const obj = Object.fromEntries(arr);
console.log(obj); // { 0: "a", 1: "b", 2: "c" }

オブジェクトの変形

Object.fromEntries、逆のメソッド Object.entries()配列操作メソッドを使用して、以下のようにオブジェクトを変形することができます。

const object1 = { a: 1, b: 2, c: 3 };

const object2 = Object.fromEntries(
  Object.entries(object1)
  .map(([ key, val ]) => [ key, val * 2 ])
);

console.log(object2);
// { a: 2, b: 4, c: 6 }

仕様書

仕様書 状態
Object.fromEntries の提案 Stage 4

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
fromEntriesChrome 完全対応 73Edge 未対応 なしFirefox 完全対応 63IE 未対応 なしOpera 完全対応 60Safari 完全対応 12.1WebView Android 完全対応 73Chrome Android 完全対応 73Firefox Android 完全対応 63Opera Android 未対応 なしSafari iOS 完全対応 12.2Samsung Internet Android 未対応 なしnodejs 完全対応 12.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報