J'ai donc ce scénario où j'ai un client-app qui envoie des données (tableau d'objets) à un serveur qui transmet ensuite les données à autres clients connecté à ce serveur.tableaux Javascript et objets: Obtenir les différences et les fusionner
Dans le client-app , les données sont en constante évolution, ce qui signifie: Les valeurs changent, de nouveaux objets à l'intérieur du tableau pop-up, les objets étant enlevés, et ainsi de suite ...
Maintenant, je veux le autres clients pour toujours recevoir les dernières données. Et parce que je ne veux pas le client-app juste pousser les toutes nouvelles données au serveur qui transmet ensuite les toutes nouvelles données aux autres clients, j'ai décidé de laisser le client app seulement appuyez sur les changements (en utilisant cette bibliothèque: https://www.npmjs.com/package/deep-object-diff).
Les autres clients reçoivent alors un tableau d'objets avec seulement les données qui ont réellement changé et parce qu'ils savent le tableau de données précédentes, je veux qu'ils « fusionner » le tableau des changements avec l'ancien objet de données .
Mon véritable problème est la fusion. Je ne sais pas comment le faire correctement. Surtout si j'ai un tableau d'objets sans aucune clé pour les objets.
donc mes données ressemble à ceci:
let data = [
{
name: 'Peter',
age: 26,
sID: 546589995544
},
{
name: 'John',
age: 33,
sID: 554589525469
}
];
En fait, il y a beaucoup plus, mais bien, thats la structure.
Donc, si la bibliothèque diff dit, ce sont les changements:
let changes = {
{
age: 34,
sID: 554589525469
}
};
(avis que j'ai maintenant un objet d'objets, et non un tableau d'objets Thats ce que le rendement diff-bibliothèque.)
Je veux l'objet fusionné pour être
[
{
name: 'Peter',
age: 26,
sID: 546589995544
},
{
name: 'John',
age: 34,
sID: 554589525469
}
];
(John est maintenant un an de plus)
Donc, je crois totalement que ce serait beaucoup plus facile si j'avais une clé pour les objets en tant qu'identifiant, mais je pense toujours qu'il doit y avoir une solution pour exactement ce scénario. Et comme vous pouvez le voir, la propriété sID peut servir d'identifiant, ce n'est juste pas une clé.
J'apprectiate si quelqu'un pouvait indiquer comment le faire dans les deux cas (avec et sans une clé spécifique pour les objets)
Voir https://stackoverflow.com/help/mcve – guest271314
maintenant le code de votre question est invalide ... –