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