Comment utiliser Lodash de fusionner les deux collections basées sur une clé?
J'ai deux collections, et les objets ont une clé commune "userId". Comme ci-dessous:
var _= require('lodash');
var a = [
{ userId:"p1", item:1},
{ userId:"p2", item:2},
{ userId:"p3", item:4}
];
var b = [
{ userId:"p1", profile:1},
{ userId:"p2", profile:2}
];
Je veux fusion sur la base de la "userId" pour produire de l':
[ { userId: 'p1', item: 1, profile: 1 },
{ userId: 'p2', item: 2, profile:2 },
{ userId: 'p3', item: 4 } ]
Je les ai jusqu'à présent:
var u = _.uniq(_.union(a, b), false, _.property('userId'));
Qui ont pour conséquence:
[ { userId: 'p1', item: 1 },
{ userId: 'p2', item: 2 },
{ userId: 'p3', item: 4 },
{ userId: 'p1', profile: 1 },
{ userId: 'p2', profile: 2 } ]
Comment puis-je les fusionner maintenant?
J'ai essayé _.keyBy, mais il en résulte:
{ p1: { userId: 'p1', profile: 1 },
p2: { userId: 'p2', profile: 2 },
p3: { userId: 'p3', item: 4 } }
qui est faux.
Quelle est la dernière étape que je devrais faire?
OriginalL'auteur murvinlai | 2016-01-29
Vous devez vous connecter pour publier un commentaire.
Lodash a un
merge
méthode qui fonctionne sur les objets (les objets avec la même clé sont fusionnées). Dans cette démo, les tableauxa
etb
sont d'abord convertis en objets (oùuserId
est la clé), puis a fusionné, et le résultat converti en un tableau (_.values
) (se débarrasser des clés)._.flatten
est alors nécessaire car_.values
ajoute un niveau supplémentaire de tableau.OriginalL'auteur Nicolas Le Thierry d'Ennequin
Essayer cette démo
OriginalL'auteur ofir fridman