2015-02-24 201 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

相关问题