-2

如何重新排序对象数组

[ {"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}, ...}
4

1 回答 1

0

看来您的要求是通过以下方式转置表和索引Class

  • 调用输入“表”
  • 调用数组的每个元素“行”
  • year对于至少一行中的每一个键,除了键Class
    • 在 中创建year一个键output,映射到对象:
      • 每个键output[year]是某行中的值classClass映射到该值:
        • 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的 ,则后面的行会覆盖前面的行。如果输入是锯齿状的,则输出将是锯齿状的。

于 2013-04-15T05:59:39.187 回答