2014-09-30 87 views
0

如果我有一個大的多維數組(矩陣),如何重新排列這些元素,使得我有「y」值作爲數組中的新「x」值?用x值轉換多維數組

很難解釋,所以讓我舉個例子。 我想要下面的數組。

[ 
[[0][1][2][3]], 
[[4][5][6][7]], 
[[8][9][10][11]], 
[[12][13][14][15]], 
] 

被變換成下面的陣列

[ 
[[0][4][8][12]], 
[[1][5][9][13]], 
[[2][6][10][14]], 
[[3][7][11][15]], 
] 

for (var i = 0; i < tablesOfData.length; i++) { 
    for (var j = 0; j < tablesOfData[i].length; j++) { 
     //Transform the array 
    } 
} 
+0

你的數組無效? – adeneo 2014-09-30 10:49:33

+0

你確定所有的行都包含相同數量的列嗎? – Sasse 2014-09-30 10:52:10

+0

不,他們不。謝謝 – user1825441 2014-09-30 11:01:44

回答

0

所有行需要具有相同的列數。

如果行數與列數相同(如您的示例中所示),以下內容應該可以工作。如果它們不一樣,那麼你需要另外創建一個

for (var i = 0; < i tablesOfData.length; i++) { 
    for (var j = i; j < tablesOfData.length; j++) { 
     var temp = tablesOfData[i][j]; 
     tablesOfData[i][j] = tablesOfData[j][i]; 
     tablesOfData[j][i] = tablesOfData[i][j]; 
    } 
} 

你需要創建一個新的表和值添加到該表中,像這樣:

var newTable = new int[tablesOfData[i].length](); 

for (var i = 0; < i tablesOfData.length; i++) { 
    for (var j = 0; j < tablesOfData.length; j++) { 
     if (i == 0) 
      newTable[j] = new int[tablesOfData.length](); 

     newTable[j][i] = tablesOfData[i][j]; 
    } 
} 

我寫的代碼記事本,所以它可能不是自己運行的正確語法,但邏輯應該是正確的。