Javascript 将数据从2个对象数组移动到第三个数组
假设我有两个对象数组Javascript 将数据从2个对象数组移动到第三个数组,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,假设我有两个对象数组 let orders = [ { id: 1, itemName: 'Peaches', amount: 2 }, { id: 2, itemName: 'Mangoes', amount: 1 }, { id: 3, itemName: 'Mangoes', amount: 10 } ]; 我想找到每个项目的订单列表,并将它们放入名为linkedOrders的数组中,我尝试了以下代码: let linkedOrders = _.map(items,
let orders = [
{ id: 1, itemName: 'Peaches', amount: 2 },
{ id: 2, itemName: 'Mangoes', amount: 1 },
{ id: 3, itemName: 'Mangoes', amount: 10 }
];
我想找到每个项目的订单列表,并将它们放入名为linkedOrders
的数组中,我尝试了以下代码:
let linkedOrders = _.map(items, item => _.where(orders, { name: item.name }));
console.log(linkedOrders);
这就是我得到的:
[{ id: 1, itemName: 'Peaches', amount: 2 }],
[{ id: 2, itemName: 'Mangoes', amount: 1 },
{ id: 3, itemName: 'Mangoes', amount: 10 }]
但我想要这样的东西:
[{'Peaches': [
{ id: 1, itemName: 'Peaches', amount: 2 }
],
'Mangoes': [
{ id: 2, itemName: 'Mangoes', amount: 1 },
{ id: 3, itemName: 'Mangoes', amount: 10 }
]],
任何帮助都将不胜感激。您只需使用Array reduce方法即可
const result = items.reduce((result, item) => {
result.push({
[item.name]: orders.filter((order) => order.itemName === item.name)
});
return result;
}, []);
有关reduce的更多信息,请检查其中一个是lodash问题,我正在使用
下划线.js
作为唯一标记。为什么要使用数组作为结果?它只有一个元素…@NinaScholz我希望结果是一个数组,因为我正在处理一个巨大的数据集,输出只依赖于顺序。为什么需要项目
?只是\uu.groupBy(orders,i=>i.itemName)
在这里不起作用?
const result = items.reduce((result, item) => {
result.push({
[item.name]: orders.filter((order) => order.itemName === item.name)
});
return result;
}, []);