J'ai donc besoin d'écrire une fonction qui met à jour mon objet avec un autre objet (mais cet objet est à l'intérieur d'un tableau), par exemple:
const mazda = { model: 5, seria: 22, wheels: 4,};
Et je veux ajouter des données de:
const newItems= [{ LCDscreen: true },{ wheels: 5 },{ model: 6},{ weight: 500},{ mirrors: 4},];
Mais ainsi la série du 1er objet est inchangée. Le résultat devrait être
{ seria: 22 ,model: 6, wheels: 4, LCDscreen: true, weight: 500 , mirrors: 4};
Quelle est la meilleure approche?
4 réponses
Cela peut être fait en une seule ligne:
newItems.reduce((acc, patch) => Object.assign(acc, patch), mazda)
Ceci itère sur tous les objets de la liste newItems
et les fusionne dans mazda
un après un.
Si vous ne souhaitez pas que l'objet mazda
soit modifié mais que vous obteniez un nouvel objet, utilisez un objet vide ({}
) comme premier paramètre de Object.assign
:
const newMazda = newItems.reduce((acc, patch) => Object.assign({}, acc, patch), mazda)
Je pense que cela fait ce que vous voulez. Prenez chaque élément de newList
et ajoutez-le en tant que nouvelle propriété à l'objet mazda
.
const mazda = { model: 5, seria: 22, wheels: 4,};
const newItems= [{ LCDscreen: true },{ wheels: 5 },{ model: 6},{ weight: 500},{ mirrors: 4}]
const result = newItems.reduce( (acc,item) => ({...acc,...item}),mazda);
console.log(result)
Vous pouvez faire une boucle simple dans le tableau et se propager les objets du tableau à l'intérieur de l'objet mazda. C'est la méthode la plus rapide après avoir utilisé une boucle for.
let mazda = { model: 5, seria: 22, wheels: 4,};
const newItems= [{ LCDscreen: true },{ wheels: 5 },{ model: 6},{ weight: 500},{ mirrors: 4}]
newItems.forEach(item => {
mazda = {...mazda, ...item};
});
console.log(mazda)
Vous pouvez simplement utiliser:
Object.assign(mazda, ...newItems)
Les objets de newItems
sont passés en tant que paramètres individuels à assign
et il mettra à jour l'objet mazda
avec les propriétés de chaque objet
Si vous ne voulez pas muter l'objet mazda
, ajoutez un littéral d'objet vide comme premier argument
const output = Object.assign({}, mazda, ...newItems)
Voici un extrait:
const mazda = { model: 5, seria: 22, wheels: 4},
newItems= [{ LCDscreen: true },{ wheels: 5 },{ model: 6},{ weight: 500},{ mirrors: 4}]
console.log(
Object.assign(mazda, ...newItems)
)
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.