如何重新排序对象数组
[ {"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}, ...}
如何重新排序对象数组
[ {"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}, ...}
看来您的要求是通过以下方式转置表和索引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
的 ,则后面的行会覆盖前面的行。如果输入是锯齿状的,则输出将是锯齿状的。