Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据从2个对象数组移动到第三个数组_Javascript_Arrays_Underscore.js - Fatal编程技术网

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;
}, []);