我有两个集合,对象具有共同的键"userId"。如下:
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}
];
我希望根据“userId”将它们合并以产生:
[ { userId: 'p1', item: 1, profile: 1 },
{ userId: 'p2', item: 2, profile:2 },
{ userId: 'p3', item: 4 } ]
到目前为止,我有以下这些:
var u = _.uniq(_.union(a, b), false, _.property('userId'));
导致的结果是:
[ { userId: 'p1', item: 1 },
{ userId: 'p2', item: 2 },
{ userId: 'p3', item: 4 },
{ userId: 'p1', profile: 1 },
{ userId: 'p2', profile: 2 } ]
现在我该如何合并它们?
我尝试使用_.keyBy,但结果是:
{ p1: { userId: 'p1', profile: 1 },
p2: { userId: 'p2', profile: 2 },
p3: { userId: 'p3', item: 4 } }
这是错误的。
我应该做什么最后一步?
userId
字段在集合中不是唯一的,则数据会被压缩成一个单一的对象。 - karloluis