Javascript 如何从对象数组中创建数量最多的项目的对象映射?
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
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
}