Object.fromEntries()

Você está lendo a versão em inglês deste conteúdo porque ainda não há uma tradução para este idioma. Ajude-nos a traduzir este artigo!

O método Object.fromEntries() transforma uma lista de pares chave-valor em um objeto.

Sintaxe

Object.fromEntries(iterable);

Parâmetros

iterable
Um iterável como Array ou Map ou qualquer outro objeto que implemente o protocolo iterável.

Valor de retorno

Um novo objeto com suas propriedades definidas pelas entradas fornecidadas pelo iterável.

Descrição

O método Object.fromEntries() recebe uma lista de pares chave-valor e retorna  um novo objeto cujas propriedades foram definidas pelas entradas da lista. O parâmetro iterable deve ser um objeto que implemente o método @@iterator, que retorne um objeto iterador que produza um objeto array-like de dois elementos, onde o primeiro será a chave da propriedade e o segundo será o valor associado à chave.

Object.fromEntries() faz o inverso de Object.entries().

Exemplos

Convertendo um Map em um Object

Com o método Object.fromEntries, é possível fazer a conveeção de um Map em um Object:

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

Convertendo um Array em um Object

Com o método Object.fromEntries, é possível converter um Array em um Object:

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

Transformações de objetos

Com o método Object.fromEntries, seu inverso Object.entries(), e os métodos para manipulação de arrays, é possível fazer transformações em objetos como por exemplo:

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 }

Especificações

Especificação Status Comentário
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.fromEntries' in that specification.
Rascunho Initial definition in ECMAScript 2019.

Compatibilidade de Navegadores

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

Veja Também