Object.fromEntries()

Метод Object.fromEntries() перетворює список пар ключ-значення на об'єкт.

Синтаксис

Object.fromEntries(iterable);

Параметри

iterable
Ітерабельний об'єкт, наприклад, Array або Map, або інші об'єкти, що реалізують протокол перебируваного.

Значення, що повертається

Новий об'єкт, чиї властивості надані записами ітерабельного об'єкта.

Опис

Метод Object.fromEntries() приймає список пар ключ-значення і повертає новий об'єкт, властивості якого надані цими записами. Аргумент iterable має бути об'єктом, що реалізує метод @@iterator, який повертає об'єкт ітератор, що утворює подібний до масиву об'єкт з двома елементами. Перший його елемент - це значення, що використовується в якості ключа властивості, а другий елемент - значення, що буде асоціюватися з цим ключем.

Object.fromEntries() виконує дію протилежну до Object.entries().

Приклади

Перетворення Map на Object

За допомогою Object.fromEntries, можна перетворити Map на Object:

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

Перетворення Array на Object

За допомогою Object.fromEntries можна перетворити Array на Object:

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 }

Специфікації

Специфікація Статус Коментар
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.fromEntries' in that specification.
Draft Початкове визначення у ECMAScript 2019.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
fromEntriesChrome Full support 73Edge No support NoFirefox Full support 63IE No support NoOpera Full support 60Safari Full support 12.1WebView Android Full support 73Chrome Android Full support 73Firefox Android Full support 63Opera Android No support NoSafari iOS Full support 12.2Samsung Internet Android No support Nonodejs Full support 12.0.0

Legend

Full support  
Full support
No support  
No support

Дивіться також