如何基于Javascript / Jquery中的多个键对数组项进行分组

开发网

我有一个如下的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。

我成功地仅按一个键分组,比如下面的示例Ticket_id。当我向对象添加另一个键时obj[item."Order_Issue] = obj[item."Order_Issue] || [];,分组依据只会在该键上完成,而忽略前一个键。任何建议都请问我在做什么错以及如何获取我想要的确切格式。谢谢。

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);

巴尔玛

使用类似的方法,但是将所有键属性组合到中间结果对象的键中。

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) {
  let key = `${item.Ticket_id}.${item.Order_Issue}.${item.Region}`;
  obj[key] = obj[key] || {
    Ticket_id: item.Ticket_id,
    Order_Issue: item.Order_Issue,
    Region: item.Region,
    Lines: []
  };
  obj[key].Lines.push({
    Line_No: item.Line_No,
    Line_Issue: item.Line_Issue,
    Serial_Number: item.Serial_Number
  });
  return obj;
}, {});

var groups = Object.values(group_Line_No);

console.log(groups);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在javascript中基于多个键对数组进行分组和转换?

如何通过PHP中的多个键对数组进行分组

使用JavaScript中的对象对数组项进行分组

如何基于Javascript中的多个键对对象数组进行分组?

如何按多个属性和总和组对数组项进行分组?

在javascript中对数组项进行分页

如何基于键对对象的JavaScript数组进行分组

如何通过JavaScript中的对象键之一对数组进行分组

通过多个键对数组进行分组并更改键名 JavaScript

使用多个值对数组进行分组,并基于循环和排序数组中的组值对数组求和

如何基于Javascript中的多个数组属性对对象数组进行分组

如何基于javascript中对象数组的日期键对产量值进行分组

如何根据PHP中的内部数组键对数组进行分组?

如何通过第一个元素对象键对数组中的数组进行分组

如何对数组中的项目进行分组?

如何对数组中的对象进行分组

如何基于数组中的键对mongo doc进行分组?

如何基于三个键对数组对象进行分组

如何基于键对数组进行分组,以及如何使用分组数组作为值来创建动态对象?

如何在javascript中对数组进行分组?

如何在JavaScript中对数组条目进行分组

按多个对象对数组进行分组 - JavaScript

如何基于mongodb中的另一个数组值对数组进行分组

如何对数组条目进行分组和合并,并对多个常见(但不是全部)键的值求和?

如何基于该键的值对数组中的键总数进行计数

如何在JavaScript中按经度纬度距离对数组项进行排序?

如何基于共同值对数组进行分组?

根据值对JavaScript数组项进行分组

Javascript:根据值对数组中的相似项进行分组