javascript - 按值合并 2 个 JS 对象数组
问题描述
问题
我有两个需要合并的对象的 Javascript 数组。我需要通过匹配每个数组中包含的单个键:值对的唯一值来合并。我要合并的值的键不同
我想根据匹配的唯一值将 Array 2 中的 key: value 对添加到 Array 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' } } ]
解决方案
如果您的数组映射顺序相同,则可以避免使用find
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' } } ]
const final = array1.map(e=> {
const found = array2.find(({_id}) => e.user === _id)
return {
...e,
info : found.info
}
})
console.log(final)
推荐阅读
- google-apps-script - How to automatically fill a default value in a sheet cell
- javascript - 如何将输入存储在本地存储中
- google-cloud-dataflow - 每当发送特定的发布/订阅消息时,是否可以重新加载删除/重新加载 Bigquery 表?
- json - 可编码的 Swift JSON 解析嵌套的 JSON
- web - hybris 中的网络浏览器
- python - 如何在 pygame 上使用字体系列?
- reactjs - 使用 StackAction 重置后 React Native Back 按钮消失
- python-3.x - Tensorflow:Dataset.from_generate()ValueError:使用序列设置数组元素
- json - Kotlin 中 JSONArray 中的 MutableList
- templates - Prestashop 1.6 - 存储在数据库和订单页面后,“已发货”模板中未显示跟踪号