基于id对对象进行分组,并创建对象数组

时间:2014-07-01 10:38:40

标签: javascript jquery

从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]}]

这是最好的方法吗?

1 个答案:

答案 0 :(得分:1)

假设数组的顺序正确,且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

相关问题