我有两个集合,对象都有一个公共键"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 } }
这是错误的。
我应该做的最后一步是什么?
上云精选
2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折
尝试此 demo
var a = [{ userId: "p1", item: 1 userId: "p2", item: 2 userId: "p3", item: 4 var b = [{ userId: "p1", profile: 1 userId: "p2", profile: 2 a.forEach(function (aitem) { b.forEach(function (bitem) { if(aitem.userId === bitem.userId) {