Javascript 如何更改JSON格式

Javascript 如何更改JSON格式,javascript,arrays,json,Javascript,Arrays,Json,我得到的ajax响应json如下 var optgroups = [{"LAST_X_HRS":1,"AREA":"WKS-FINGER1","EQ_ID":"WKS1"}, {"LAST_X_HRS":1,"AREA":"WKS-FINGER1","EQ_ID":"WKS2"}, {"LAST_X_HRS":1,"AREA":"WKS-FINGER2","EQ_ID":"WKS3"}, {"LAST_X_HRS":1,"AREA":"WKS-FINGER2","EQ_ID":"WKS4"}]

我得到的ajax响应json如下

var optgroups = [{"LAST_X_HRS":1,"AREA":"WKS-FINGER1","EQ_ID":"WKS1"},
{"LAST_X_HRS":1,"AREA":"WKS-FINGER1","EQ_ID":"WKS2"},
{"LAST_X_HRS":1,"AREA":"WKS-FINGER2","EQ_ID":"WKS3"},
{"LAST_X_HRS":1,"AREA":"WKS-FINGER2","EQ_ID":"WKS4"}]
如何将其更改为以下格式

 var optgroups = [
                          {
                              label: 'WKS-FINGER1', children: [
                                  {label: 'WKS1', value: 'WKS1',},
                                   {label: 'WKS2', value: 'WKS2',}

                              ]
                          },
                          {
                              label: 'WKS-FINGER2', children: [
                                  {label: 'WKS3', value: 'WKS3',},
                                   {label: 'WKS4', value: 'WK4',}
                              ]
                          }
                      ];
您可以使用一个数组并构建一个新数组

该方法将
thisArgs
用作项目引用的临时对象

var optgroups=[{“LAST_X_HRS”:1,“AREA”:“WKS-FINGER1”,“EQ_ID”:“WKS1”},{“LAST_X_HRS”:1,“AREA”:“WKS-FINGER1”,“EQ_ID”:“WKS-FINGER2”,“EQ_ID”:“WKS3”},{“LAST_X_HRS”:1,“AREA”:“WKS-FINGER2”,“EQ_ID”:“s4”,
温度=[];
optgroups.forEach(函数(a){
如果(!此[a.区域]){
这个[a.AREA]={标签:a.AREA,子项:[]};
温度推动(该[a.区域]);
}
这个[a.AREA].children.push({label:a.EQ\u ID,value:a.EQ\u ID});
},Object.create(null));

document.write(''+JSON.stringify(temp,0,4)+'')
事实证明,我的方法与@Nina Scholz非常相似,但是当涉及到数组缩减时,
array.prototype.reduce()
对我来说更有意义

var optGroups=[{“LAST_X_HRS”:1,“AREA”:“WKS-FINGER1”,“EQ_ID”:“WKS1”},{“LAST_X_HRS”:1,“AREA”:“WKS-FINGER1”,“EQ_ID”:“WKS-FINGER2”,“EQ_ID”:“WKS3”},{“LAST_X_HRS”:1,“AREA”:“WKS-FINGER2”,“EQ_ID”:“s4”,
reduced=optGroups.reduce((p,c)=>{var i=p.length-1;
if(!!p[i]&&p[i]。标签==c.面积){
p[i].children.push({label:c.EQ_ID,value:c.EQ_ID});
}否则{
p、 推送({标签:c.AREA,子项:[]});
p[++i].children.push({label:c.EQ_ID,value:c.EQ_ID});
}
返回p;},[]);

document.write(''+JSON.stringify(reduced,0,2)+'')看起来需要一个for循环。