问题
我需要合并从 MongoDB 按值返回的两个数组,但是我尝试过的所有用于常规 javascript 数组的方法都无法正常工作。我们将非常感谢您的帮助
数组
array1 = [ { _id: 5c6c7132f9bf4bdab9c906ff,
user: 5c65d9438e4a834c8e85dd7d },
{ _id: 5c6ccd6d3a0dc4e4951c2bee,
user: 5c65d9438e4a834c8e85dd7e } ]
array2 = users [ { _id: 5c65d9438e4a834c8e85dd7d,
info: { name: 'John', city: 'New York' } },
{ _id: 5c65d9438e4a834c8e85dd7e,
info: { name: 'Paneer', city: 'San Fran' } } ]
期望的结果
mergedArray = [ { _id: 5c6c7132f9bf4bdab9c906ff,
user: 5c65d9438e4a834c8e85dd7d,
info: { name: 'John', city: 'New York' } } ,
{ _id: 5c6ccd6d3a0dc4e4951c2bee,
user: 5c65d9438e4a834c8e85dd7e,
info: { name: 'Paneer', city: 'San Fran' } } ]
我尝试过的
- _.从lodash合并
- _.map 和 _.从 lodash 扩展
- 各种普通的 javascript .map 函数
最佳答案
一种可能的解决方案是使用 Array.map()通过 array1
并使用 Array.find() 从 array2
获取相关的 info
数据:
const array1 = [
{_id: '5c6c7132f9bf4bdab9c906ff', user: '5c65d9438e4a834c8e85dd7d'},
{_id: '5c6ccd6d3a0dc4e4951c2bee', user: '5c65d9438e4a834c8e85dd7e'}
];
const array2 = [
{
_id: '5c65d9438e4a834c8e85dd7d',
info: { name: 'John', city: 'New York' }
},
{
_id: '5c65d9438e4a834c8e85dd7e',
info: { name: 'Paneer', city: 'San Fran' }
}
];
let merged = array1.map(
o => ({...o, info: array2.find(({_id}) => _id === o.user).info})
);
console.log(merged);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
关于javascript - 按 MongoDB 返回的值合并两个对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55736245/