-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キーを除く、少なくとも 1 つの行のキーであるすべてClass
    • yearでキーを作成outputし、オブジェクトにマッピングします。
      • の各キーoutput[year]は、ある行の値classであり、次の値Classにマッピングされます。
        • output[year][class]=input.find("Class",class)[year]

これは可能な実装の 1 つです。

 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 に答える