如何重新排列对象数组
[ {"2007": rank, "2008": rank, "Class": "label 1"},
{"2007": rank, "2008": rank, "Class": "label 2"}, ... ]
进入嵌套对象,例如:
{"2007":
{"label 1": rank, "label 2": rank},
"2008":
{"label 1": rank, "label 2": rank}, ...}
答案 0 :(得分:0)
您的要求似乎是按Class
转换表和索引:
year
至少是一行中的键,但键Class
除外
year
成为output
中的一个键,映射到该对象:
output[year]
中的每个键都是某行中class
的值Class
,映射到该值:
output[year][class]
= input.find("Class",class)[year]
这是一种可能的实施方式:
var input = [ {"2007": rank, "2008": rank, "Class": "label 1"},
{"2007": rank, "2008": rank, "Class": "label 2"} ]
//////////
var yr, i;
var output = {};
for(i=0; i<input.length; i++){
var row = input[i];
for(yr in row){
output[yr] = output[yr] || {};
output[yr][row.Class] = row[yr];
}
}
//////////////
return output;
测试:http://jsfiddle.net/aT5YG/1
如果多行具有相同的Class
,则后面的行会覆盖前一行。如果输入是锯齿状的,则输出将是锯齿状的。