Object.fromEntries()

La méthode Object.fromEntries() permet de transformer une liste de paires de clés/valeurs en un objet.

Syntaxe

Object.fromEntries(iterable);

Paramètres

iterable

Un itérable tel qu'un tableau (Array) ou une Map ou tout autre objet qui implémente le protocole itérable.

Valeur de retour

Un nouvel objet dont les propriétés sont fournies par les éléments de l'itérable.

Description

La méthode Object.fromEntries() prend comme argument une liste de paires de clés-valeurs et renvoie un nouvel objet dont les propriétés sont fournies par ces clés-valeurs. L'argument iterable doit implémenter une méthode @@iterator qui renvoie un itérateur produisant un objet semblable à un tableau avec deux éléments ; le premier élément est une valeur qui sera utilisée comme clé de la propriété et le second élément sera utilisé comme valeur associée à cette clé.

Object.fromEntries() est la fonction inverse de Object.entries().

Exemples

Convertir une Map en un Object

Grâce à Object.fromEntries, on peut convertir des objets Map en Object :

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

Convertir un Array en un Object

Grâce à Object.fromEntries, on peut convertir des objets Array en Object :

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

Transformer des objets

Avec Object.fromEntries et la méthode réciproque Object.entries(), et les méthodes de manipulation de tableaux, on peut transformer des objets :

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 }

Spécifications

Spécification État Commentaires
ECMAScript (ECMA-262)
La définition de 'Object.fromEntries' dans cette spécification.
Standard évolutif Définition initiale avec ES2019.

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi