javascript - JavaScript 将数据分组到 2 层深的树视图中,最后一层是数组
问题描述
我有一个这样的 JSON 对象:
[
{
"venueId": "10001",
"items": [
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1604",
"itemDescription": "Chef Instruction",
"categoryCode": "28",
"categoryDescription": "Food Instructions",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1381",
"itemDescription": "Meat Lovers Pizza",
"categoryCode": "48",
"categoryDescription": "25Fore - Pizza",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1027",
"itemDescription": "Sweet Spot Latte Mug",
"categoryCode": "23",
"categoryDescription": "Sweet Spot - Coffee/Tea",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "17",
"itemCode": "1413",
"itemDescription": "Garlic Bread",
"categoryCode": "51",
"categoryDescription": "25Fore - Starters",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "17",
"itemCode": "51",
"itemDescription": "Cascade Light Schooner",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "15",
"itemCode": "827",
"itemDescription": "Banrock Station Moscato 1L",
"categoryCode": "15",
"categoryDescription": "Wine White",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "15",
"itemCode": "1192",
"itemDescription": "Apple Slice",
"categoryCode": "31",
"categoryDescription": "Cafe Gold - Cake Selection",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "15",
"itemCode": "301",
"itemDescription": "Tooheys New 6pk",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "12",
"itemCode": "1036",
"itemDescription": "Cappuccino 16oz",
"categoryCode": "23",
"categoryDescription": "Sweet Spot - Coffee/Tea",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "12",
"itemCode": "61",
"itemDescription": "Great Northern Orig Pint",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "12",
"itemCode": "1232",
"itemDescription": "Asst. Cheese/Crackers 5pce",
"categoryCode": "33",
"categoryDescription": "Cafe Gold - Savoury Cabinet",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "17",
"itemCode": "863",
"itemDescription": "Lindemans Bin 85 P/Grigio 250",
"categoryCode": "15",
"categoryDescription": "Wine White",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "17",
"itemCode": "1600",
"itemDescription": "Lemon/Lime Bitters Glass",
"categoryCode": "7",
"categoryDescription": "Postmix",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "17",
"itemCode": "1143",
"itemDescription": "Chocolate",
"categoryCode": "28",
"categoryDescription": "Food Instructions",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "491",
"itemDescription": "Coke 330ml",
"categoryCode": "9",
"categoryDescription": "Soft Drink",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "335",
"itemDescription": "Postmix Glass",
"categoryCode": "7",
"categoryDescription": "Postmix",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "68",
"itemDescription": "Great Northern Super Crisp Po",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1286",
"itemDescription": "Mushroom Sauce",
"categoryCode": "36",
"categoryDescription": "Sauce Instructions",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1604",
"itemDescription": "Chef Instruction",
"categoryCode": "28",
"categoryDescription": "Food Instructions",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1831",
"itemDescription": "Ginger Beer Crows Nest 330ml",
"categoryCode": "9",
"categoryDescription": "Soft Drink",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1105",
"itemDescription": "Filo/Salad",
"categoryCode": "26",
"categoryDescription": "Sweet Spot - Savoury Cabinet",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1187",
"itemDescription": "Cafe Gold Pie 4 n 20",
"categoryCode": "30",
"categoryDescription": "Cafe Gold - Bar Menu",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1360",
"itemDescription": "Extra-Lamb Shank",
"categoryCode": "50",
"categoryDescription": "25Fore - Specials",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1296",
"itemDescription": "Side Chips",
"categoryCode": "36",
"categoryDescription": "Sauce Instructions",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1808",
"itemDescription": "Add Reef Topper ",
"categoryCode": "52",
"categoryDescription": "25Fore - Toppers",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1224",
"itemDescription": "Cafe Gold Long Black Mug",
"categoryCode": "32",
"categoryDescription": "Cafe Gold - Coffee/Tea",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "43",
"itemDescription": "Carlton Mid Pint",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "21",
"itemDescription": "Canadian Club/Dry Schooner",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "15",
"itemCode": "105",
"itemDescription": "XXXX Gold Schooner",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "15",
"itemCode": "1027",
"itemDescription": "Sweet Spot Latte Mug",
"categoryCode": "23",
"categoryDescription": "Sweet Spot - Coffee/Tea",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "15",
"itemCode": "301",
"itemDescription": "Tooheys New 6pk",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1639",
"itemDescription": "Upper Area",
"categoryCode": "87",
"categoryDescription": "Seating Instructions",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "335",
"itemDescription": "Postmix Glass",
"categoryCode": "7",
"categoryDescription": "Postmix",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "491",
"itemDescription": "Coke 330ml",
"categoryCode": "9",
"categoryDescription": "Soft Drink",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "17",
"itemCode": "43",
"itemDescription": "Carlton Mid Pint",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "17",
"itemCode": "1330",
"itemDescription": "200g Rump",
"categoryCode": "40",
"categoryDescription": "25Fore - From The Grill",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "17",
"itemCode": "1462",
"itemDescription": "Lactose Free Milk ",
"categoryCode": "54",
"categoryDescription": "Coffee Instructions",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1625",
"itemDescription": "Chicken",
"categoryCode": "28",
"categoryDescription": "Food Instructions",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "43",
"itemDescription": "Carlton Mid Pint",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "14",
"itemCode": "1725",
"itemDescription": "THURS T-Bone",
"categoryCode": "46",
"categoryDescription": "25Fore - Nightly Specials",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "15",
"itemCode": "1261",
"itemDescription": "Well Done",
"categoryCode": "35",
"categoryDescription": "Cooking Instructions",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "15",
"itemCode": "104",
"itemDescription": "XXXX Gold Pot",
"categoryCode": "4",
"categoryDescription": "Bulk Beer",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
},
{
"venueId": "10001",
"locationId": "15",
"itemCode": "1411",
"itemDescription": "Bread Roll",
"categoryCode": "51",
"categoryDescription": "25Fore - Starters",
"qty": 0,
"saleValue": 0,
"saleDatetime": "0001-01-01T00:00:00",
"timeToLive": 0
}
]
}
]
我想把它变成一个新的 JSON 对象,其中所有内容都按 id 分组(它已经是但我需要数字成为键)然后按 categoryCode 所以结果看起来像这样:
{
'1': {
'555': [{ itemCode: '456'}, { itemCode: '457'}, { itemCode: '458'}]
}
}
有没有一种简单的方法可以使用 lodash 或纯 JavaScript 或一些 NPM 包来做到这一点?这类似于这个问题:JavaScript group data into tree view 2 levels deep 但不同之处在于第三级是对象数组。
解决方案
如果组有必要,您可以采用两个嵌套循环并创建新的对象/数组。
var data = [{ venueId: "10001", items: [{ venueId: "10001", locationId: "14", itemCode: "1604", itemDescription: "Chef Instruction", categoryCode: "28", categoryDescription: "Food Instructions", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1381", itemDescription: "Meat Lovers Pizza", categoryCode: "48", categoryDescription: "25Fore - Pizza", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1027", itemDescription: "Sweet Spot Latte Mug", categoryCode: "23", categoryDescription: "Sweet Spot - Coffee/Tea", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "17", itemCode: "1413", itemDescription: "Garlic Bread", categoryCode: "51", categoryDescription: "25Fore - Starters", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "17", itemCode: "51", itemDescription: "Cascade Light Schooner", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "15", itemCode: "827", itemDescription: "Banrock Station Moscato 1L", categoryCode: "15", categoryDescription: "Wine White", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "15", itemCode: "1192", itemDescription: "Apple Slice", categoryCode: "31", categoryDescription: "Cafe Gold - Cake Selection", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "15", itemCode: "301", itemDescription: "Tooheys New 6pk", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "12", itemCode: "1036", itemDescription: "Cappuccino 16oz", categoryCode: "23", categoryDescription: "Sweet Spot - Coffee/Tea", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "12", itemCode: "61", itemDescription: "Great Northern Orig Pint", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "12", itemCode: "1232", itemDescription: "Asst. Cheese/Crackers 5pce", categoryCode: "33", categoryDescription: "Cafe Gold - Savoury Cabinet", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "17", itemCode: "863", itemDescription: "Lindemans Bin 85 P/Grigio 250", categoryCode: "15", categoryDescription: "Wine White", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "17", itemCode: "1600", itemDescription: "Lemon/Lime Bitters Glass", categoryCode: "7", categoryDescription: "Postmix", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "17", itemCode: "1143", itemDescription: "Chocolate", categoryCode: "28", categoryDescription: "Food Instructions", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "491", itemDescription: "Coke 330ml", categoryCode: "9", categoryDescription: "Soft Drink", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "335", itemDescription: "Postmix Glass", categoryCode: "7", categoryDescription: "Postmix", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "68", itemDescription: "Great Northern Super Crisp Po", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1286", itemDescription: "Mushroom Sauce", categoryCode: "36", categoryDescription: "Sauce Instructions", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1604", itemDescription: "Chef Instruction", categoryCode: "28", categoryDescription: "Food Instructions", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1831", itemDescription: "Ginger Beer Crows Nest 330ml", categoryCode: "9", categoryDescription: "Soft Drink", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1105", itemDescription: "Filo/Salad", categoryCode: "26", categoryDescription: "Sweet Spot - Savoury Cabinet", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1187", itemDescription: "Cafe Gold Pie 4 n 20", categoryCode: "30", categoryDescription: "Cafe Gold - Bar Menu", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1360", itemDescription: "Extra-Lamb Shank", categoryCode: "50", categoryDescription: "25Fore - Specials", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1296", itemDescription: "Side Chips", categoryCode: "36", categoryDescription: "Sauce Instructions", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1808", itemDescription: "Add Reef Topper ", categoryCode: "52", categoryDescription: "25Fore - Toppers", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1224", itemDescription: "Cafe Gold Long Black Mug", categoryCode: "32", categoryDescription: "Cafe Gold - Coffee/Tea", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "43", itemDescription: "Carlton Mid Pint", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "21", itemDescription: "Canadian Club/Dry Schooner", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "15", itemCode: "105", itemDescription: "XXXX Gold Schooner", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "15", itemCode: "1027", itemDescription: "Sweet Spot Latte Mug", categoryCode: "23", categoryDescription: "Sweet Spot - Coffee/Tea", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "15", itemCode: "301", itemDescription: "Tooheys New 6pk", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1639", itemDescription: "Upper Area", categoryCode: "87", categoryDescription: "Seating Instructions", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "335", itemDescription: "Postmix Glass", categoryCode: "7", categoryDescription: "Postmix", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "491", itemDescription: "Coke 330ml", categoryCode: "9", categoryDescription: "Soft Drink", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "17", itemCode: "43", itemDescription: "Carlton Mid Pint", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "17", itemCode: "1330", itemDescription: "200g Rump", categoryCode: "40", categoryDescription: "25Fore - From The Grill", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "17", itemCode: "1462", itemDescription: "Lactose Free Milk ", categoryCode: "54", categoryDescription: "Coffee Instructions", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1625", itemDescription: "Chicken", categoryCode: "28", categoryDescription: "Food Instructions", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "43", itemDescription: "Carlton Mid Pint", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "14", itemCode: "1725", itemDescription: "THURS T-Bone", categoryCode: "46", categoryDescription: "25Fore - Nightly Specials", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "15", itemCode: "1261", itemDescription: "Well Done", categoryCode: "35", categoryDescription: "Cooking Instructions", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "15", itemCode: "104", itemDescription: "XXXX Gold Pot", categoryCode: "4", categoryDescription: "Bulk Beer", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }, { venueId: "10001", locationId: "15", itemCode: "1411", itemDescription: "Bread Roll", categoryCode: "51", categoryDescription: "25Fore - Starters", qty: 0, saleValue: 0, saleDatetime: "0001-01-01T00:00:00", timeToLive: 0 }] }],
result = data.reduce((r, { items }) => {
items.forEach(({ itemCode, ...item }) => ['venueId', 'categoryCode']
.reduce((o, k, i) => o[item[k]] = o[item[k]] || (i ? [] : {}), r)
.push({ itemCode })
);
return r;
}, {});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- c++ - 主函数外的新运算符 - C++
- c++builder - C++:如何使 VCL 组件引用本身?
- spring - Neo4j使用maven嵌入spring
- reactjs - 尽管没有在 package.json 中显示,但 create-react-app 使用模块
- python - 如何运行 selenium 并在本地端口上运行?
- c++ - 如果整数与指针大小相同,是否重新解释将整数转换为指针双射?
- c# - ML.NET CategoricalOneHotVectorizer 是否也对测试数据进行编码?
- elasticsearch - Elasticsearch关键字长度超过6
- ms-access - 使用 VBA 将文本文件导入 MS Access 表的最快方法是什么?
- environment-variables - centos csh 未设置环境变量