Je dois copier un objet à partir d'une matrice donnée, modifier certaines des valeurs et republier la matrice en tant que nouvelle valeur.
Object.assign(newObj, oldObj); newObj.debit = result[0].credit; newObj.credit = result[0].debit; newObj.id = getNewEntryId(data); // here I get an new id which is free - works fine so far entries.push(newObj);
3 Réponses :
Le meilleur est d'utiliser Lodash avec une fonction de profondeur, ce qui crée récursivement une copie complète. p>
Je suis dans la phase d'apprentissage de JS et je veux coder avec pure JS.
let newObj = {
...oldObj,
id: oldObj.id,
debit: oldObj.credit,
credit: oldObj.debit
};
entries.push(newObj);
Merci. Avec votre solution, je perdrais des paires de clé / valeur supplémentaires s'il y en a une (qui pourrait être dans des versions ultérieures).
Ensuite, épargnez simplement le OldObject à l'intérieur de NewObj et remplacez les propriétés que vous souhaitez.
Merci pour ce code Snippet, qui pourrait fournir une aide limitée et immédiate. Un Une explication appropriée améliorerait considérablement sa valeur à long terme en montrant pourquoi il s'agit d'une bonne solution au problème et de Rendez-le plus utile pour les futurs lecteurs avec d'autres questions similaires. S'il vous plaît Modifier Votre réponse Pour ajouter des explications, y compris les hypothèses que vous avez apportées.
var newObject = Object.assign({}, entries.filter(entry => entry.id == id));
newObject.id = ...;
entries.push(newObject);
should do the trick :)If you have an object with methods use Object.create instead.
Objet.create () - développeur.mozilla. org / fr-nous / docs / web / javascript / référence / ...