【发布时间】:2019-09-04 03:06:03
【问题描述】:
问题
我有两个需要合并的对象的 Javascript 数组。我需要通过匹配每个数组中包含的单个键:值对的唯一值来合并。我要合并的值的键不同
我想根据匹配的唯一值将数组 2 中的键:值对添加到数组 1 中的正确对象。 array1.user 和 array2._id 的值是我需要匹配的值。
数组
const array1 = [ { _id: 5c6c7132f9bf4bdab9c906ff,
user: 5c65d9438e4a834c8e85dd7d },
{ _id: 5c6ccd6d3a0dc4e4951c2bee,
user: 5c65d9438e4a834c8e85dd7e } ]
const array2 = users [ { _id: 5c65d9438e4a834c8e85dd7d,
info: { name: 'John', city: 'New York' } },
{ _id: 5c65d9438e4a834c8e85dd7e,
info: { name: 'Paneer', city: 'San Fran' } } ]
我的尝试
我尝试过像这样使用 lodash 的 _.map 和 _.extend 函数,但我是 lodash 新手,它没有给我正确的输出
const mergedArray = _.map(array1, function(item){
return _.extend(item, _.find(array2, {_id: item.user}));
});
结果
mergedArray [ { _id: 5c65d9438e4a834c8e85dd7d,
info: { name: 'John', city: 'New York' } },
{ _id: 5c65d9438e4a834c8e85dd7e,
info: { name: 'Paneer', city: 'San Fran' } }]
想要的结果
const mergedArray = [ { _id: 5c6c7132f9bf4bdab9c906ff,
user: 5c65d9438e4a834c8e85dd7d,
info: { name: 'John', city: 'New York' } } ,
{ _id: 5c6ccd6d3a0dc4e4951c2bee,
user: 5c65d9438e4a834c8e85dd7e,
info: { name: 'Paneer', city: 'San Fran' } } ]
【问题讨论】:
-
为什么它们是数组?是否有要求的排序顺序?如果没有,您似乎拥有唯一的 ID,这使得该结构作为
_id是关键的对象更加方便。然后您可以轻松地通过 ID 查找,并避免所有重复。
标签: javascript arrays merge