あなたの要件は、テーブルとインデックスを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
、後の行が前の行を上書きします。入力がギザギザだった場合、出力もギザギザになります。