我有一个如下的JavaScript数组
var data = [{
"Ticket_id": "239248",
"Order_Issue": "SAP",
"Region": "EU",
"Line_No": "10",
"Line_Issue": "Qty not available",
"Serial_Number": "72CEP92"
},
{
"Ticket_id": "239248",
"Order_Issue": "SAP",
"Region": "EU",
"Line_No": "20",
"Line_Issue": "contact info missing",
"Serial_Number": "2198IE3"
}];
我想按多个键对我的数组进行分组。结果应如下所示:
var data = [{
"Ticket_id": "239248",
"Order_Issue": "SAP",
"Region": "EU",
"Lines" : [
{"Line_No": "10",
"Line_Issue": "Qty not available",
"Serial_Number": "72CEP92"},
{"Line_No": "20",
"Line_Issue": "contact info missing",
"Serial_Number": "2198IE3"}]
}];
基本上,我会按照Ticket_id、Order_Issue和Region进行分组。然后,我会添加一个Items子数组,其中我将存储所有的Line_No、Line_Issue和Serial_Number。
I succeeded to group only by one key let's say by Ticket_id as the below example. When I add another key to my object obj[item."Order_Issue] = obj[item."Order_Issue] || [];
, the group by will be done only on that key and ignore the previous key. Any suggestions please what am I doing wrong and how to get the exact format I want. Thank you.
var data = [{
"Ticket_id": "239248",
"Order_Issue": "SAP",
"Region": "EU",
"Line_No": "10",
"Line_Issue": "Qty not available",
"Serial_Number": "72CEP92"
},
{
"Ticket_id": "239248",
"Order_Issue": "SAP",
"Region": "EU",
"Line_No": "20",
"Line_Issue": "contact info missing",
"Serial_Number": "2198IE3"
},
{
"Ticket_id": "239267",
"Order_Issue": "Online Payment",
"Region": "EU",
"Line_No": "10",
"Line_Issue": "card expired",
"Serial_Number": "21BBF03"
}];
var group_Line_No = data.reduce(function (obj, item) {
obj[item.Ticket_id] = obj[item.Ticket_id] || [];
obj[item.Ticket_id].push(item.Line_No);
return obj;
}, {});
console.log(group_Line_No);
var groups = Object.keys(group_Line_No).map(function (key) {
return {Ticket_id: key, Line_No: group_Line_No[key]};
});
console.log(groups);