0
votes

Comment copier un objet de Anarray, modifiez-le et repoussez-le comme nouvel objet sur le tableau

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 :


0
votes

Le meilleur est d'utiliser Lodash avec une fonction de profondeur, ce qui crée récursivement une copie complète.


1 commentaires

Je suis dans la phase d'apprentissage de JS et je veux coder avec pure JS.



0
votes
let newObj = {
    ...oldObj,
    id: oldObj.id,
    debit: oldObj.credit,
    credit: oldObj.debit
};
entries.push(newObj);

3 commentaires

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.



0
votes
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.  

0 commentaires