2015-02-24 254 views
0

我有maxtrix形式這樣創建每個數組的第一個元素的數組

var costs = [ 
     [4, 6, 8, 8], 
     [6, 8, 6, 7], 
     [5, 7, 6, 8], 
    ]; 

數組我如何把它轉換爲這個

[[4,6,5], [6,8,7], [8,6,5], [8,7,5]] 

這正是我試圖

var cols = []; 

for(var i = 0; i<costs.length; i++) 
{ 
    cols.push(costs[i][0]); 
} 

return col; 

而這給我[4,6,5]。我知道我錯過了什麼,任何幫助都會很棒。由於

+0

是成本保證只包含3個數組,也可以是任意數量的? – Magrangs 2015-02-24 12:02:36

+0

@Magrangs它可以是任何數字 – MrFoh 2015-02-24 12:03:26

+1

這不是那麼難 - > ** http://jsfiddle.net/d1mbf71v/** – adeneo 2015-02-24 12:18:02

回答

2

您需要另一個for循環中的第一個內:

var costs = [ 
 
    [4, 6, 8, 8], 
 
    [6, 8, 6, 7], 
 
    [5, 7, 6, 8], 
 
]; 
 

 
alert("Original: " + JSON.stringify(costs)); 
 

 
// Prepare array... 
 
var cols = new Array(costs[0].length); 
 
for(var i = 0; i < costs[0].length; i++) { 
 
    cols[i] = new Array(costs.length); 
 
} 
 

 
// Assign values... 
 
for(var i = 0; i < costs.length; i++) { 
 
    for(var k = 0; k < costs[i].length; k++) { 
 
     cols[k][i] = costs[i][k]; 
 
    } 
 
} 
 

 
alert("New: " + JSON.stringify(cols));

+0

這隻輸出三個陣列而不是四個 – MrFoh 2015-02-24 12:15:03

+0

給我一分鐘... – ByteHamster 2015-02-24 12:16:42

+0

好吧,看看我更新的答案 – ByteHamster 2015-02-24 12:23:44

相關問題