Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于id对对象进行分组,并创建对象数组_Javascript_Jquery - Fatal编程技术网

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

Javascript 基于id对对象进行分组,并创建对象数组,javascript,jquery,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 我想根据这些值的

从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
我想根据这些值的
组id
对它们进行分组,并生成一个如下所示的对象数组

[{name: 'Name1', data: [1 ,3]}, {name: 'Name2', data: [1, 2]}]

最好的方法是什么?

假设数组的顺序正确,并且
group\u id
总是得到相同的
group\u 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

循环响应数据,构造每个对象,然后将它们添加到数组中应该可以工作。您知道组ID的顺序是否正确吗?是的,它们将按顺序出现。