Javascript 如何从对象数组中创建数量最多的项目的对象映射?

Javascript 如何从对象数组中创建数量最多的项目的对象映射?,javascript,arrays,loops,Javascript,Arrays,Loops,JavaScript新手,这是我的第一篇文章。我有一组对象: var allOrders = [ { id: 1, order: [ { itemName: "Shoes", quantity: 1 }, { itemName: "Socks", quantity: 3 }, { itemName: "Sandals", quanti

JavaScript新手,这是我的第一篇文章。我有一组对象:

  var allOrders = [
        {
            id: 1,
            order: [
                { itemName: "Shoes", quantity: 1 },
                { itemName: "Socks", quantity: 3 },
                { itemName: "Sandals", quantity: 5 },
                { itemName: "Shirts", quantity: 1 },
            ],
        },
        {
            id: 2,
            order: [
                { itemName: "Hats", quantity: 1 },
                { itemName: "Shoes", quantity: 3 },
                { itemName: "Sandals", quantity: 5 },
                { itemName: "Shirts", quantity: 1 },
            ],
        },
 ]
我已经做了一个嵌套循环来访问所有的itemName和quantity

for (let i = 0; i < allOrders.length; i++) {
  let orders = allOrders[i].order

  for (let j = 0; j < orders.length; j++) {
    let itemName = orders[j].itemName;
    let quantity = orders[j].quantity;
  }
}

谢谢大家!

简化为一个由
itemName
索引的对象,然后使用
object对其条目进行排序以创建一个已排序的对象。fromEntries

var allOrders=[
{
id:1,
订单:[
{项目名称:“鞋”,数量:1},
{项目名称:“袜子”,数量:3},
{项目名称:“凉鞋”,数量:5},
{项目名称:“衬衫”,数量:1},
],
},
{
id:2,
订单:[
{itemName:“Hats”,数量:1},
{项目名称:“鞋”,数量:3},
{项目名称:“凉鞋”,数量:5},
{项目名称:“衬衫”,数量:1},
],
},
];
const unordered=allOrders.reduce((a,{order})=>{
order.forEach({itemName,quantity})=>{
a[itemName]=(a[itemName]| | 0)+数量;
});
返回a;
}, {});
const ordered=Object.fromEntries(
Object.entries(无序)。排序(
(a,b)=>b[1]-a[1]
)
);
控制台日志(已订购)
{
   Sandals: 10,
   Shoes: 4,
   Socks: 3,
   Shirts: 3,
   Hats: 1
}