根据id对对象进行分组,并创建对象数组

Group objects based on a id, and create a array of ojects

本文关键字:创建对象 数组 id 对象 根据      更新时间:2023-09-26

从ajax请求中我得到了这个对象数组:

0: Object
  group_id: 2
  group_name: "Name1"
  rez: 1
1: Object
  group_id: 2
  group_name: "Name1"
  rez: 3
2: Object
  group_id: 3
  group_name: "Name2"
  rez: 1
3: Object
  group_id: 3
  group_name: "Name2"
  rez: 2

我想根据它们的group_id对这些值进行分组,并生成一个如下所示的对象数组。

[{name: 'Name1', data: [1 ,3]}, {name: 'Name2', data: [1, 2]}]
做这件事最好的方法是什么?

假设数组将以正确的顺序出现,并且group_id总是产生相同的group_name,您可以使用此算法生成您想要的对象:

var out = []; 
for (var j in arr) {
  var obj = arr[j];
  var last = out[out.length-1];
  if (last != undefined && last.name == obj.group_name) {
    var data = last.data;
    data.push(obj.rez);
    out[out.length-1].data = data;
  } else {
    var newObj = {name: obj.group_name, data: [obj.rez]};
    out.push(newObj);
  }
}

注意:在本例中,您接收到的数组被赋予变量名称arr