web-dev-qa-db-fra.com

Alternative de Object.assign (... array)

Supposons que nous avons un tableau d'objets.

L'appel de Object.assign(...array) crée un héritage entre ces objets, où objet avec index i remplace les propriétés existantes dans l'objet avec index i-1

Par exemple:

var array=[{interf:'IPerson',name:'Someone'},{clss:'Person',name:'Ahmed'},{student:true}];
console.log(
    Object.assign(...array) // Object.assign(array[0],array[1],array[2])
)

Maintenant, en utilisant Babel avec la syntaxe de propagation d'objet proposée, nous pouvons le faire de manière statique:

{...array[0],...array[1],...array[2]} // spread used for each object not for array

Comment faire cela dynamiquement?

Il y a un chevauchement de contexte de "syntaxe répandue". Je veux dire comment utiliser la syntaxe de propagation pour les deux:

  • Pour que le tableau répande des éléments.
  • Pour que l’objet littéral de sortie {} Fasse l’héritage

?

J'ai essayé {...array} Et il renvoie {0:<array[0]>,1:<array[1]>,2:<array[2]>}, Ce qui est pas le même résultat que Object.assign(...array).

25
Abdennour TOUMI

Tu recherches

var obj = Object.assign({}, ...array)

qui crée un nouvel objet au lieu de muter array[0].

31
Bergi

Il me semble que la méthode que vous recherchez est .concat ()

Retourne un nouveau tableau qui est une fusion de la cible et de la source.

1