按列

2016-09-16 68 views
0

的可變數量排序陣列說我有一個數組按列

var originalArray = [1,2,3,4,5,6,7] 

我想顯示應用 function orderToColumn (originalArray, numberofcolumn)得到像這樣

Array [ 1, 4, 7, 2, 5, undefined, 3, 6, undefined ] 

問題的關鍵是我想返回值能夠以下列格式顯示我的陣列:

1 4 7 
2 5 
3 6 

繼承人我的企圖遠:https://jsfiddle.net/042o7rv9/ 該陣列可以是任何大小和numberofcolumn>=1

+0

你能不能給一個較長的另一個例子或較短的陣列? – Xufox

+0

'originalArray'是否總是以'1'開頭並且總是排序?換句話說,爲什麼沒有缺失'0'? – Xufox

+0

nah該數組可能是對象,我使用排序的數字只是爲了解釋的目的。無論如何,我想出了我自己的。在渲染而不是算法錯誤時似乎更像是bootstrap/css錯誤 –

回答

2

你可以做這樣的事情。

var a = [1,2,3,4,5,6,7]; 
function orderToColumn(arr,col){ 
    var len = col*Math.ceil(arr.length/col); 
    console.log(len); 
    var newArr=[]; 
    for(var i = 0;i<col;i++){ 
    for(var j=0;j<len/col;j++){ 
     newArr.push(arr[j*col+i]); 
    } 
    } 
    return newArr; 
} 
var b = orderToColumn(a,3); 
console.log(b); // [1, 4, 7, 2, 5, undefined, 3, 6, undefined] 
0

您可能在功能上如下:

function columnize(a,n){ 
 
    var count = Math.ceil(a.length/n); 
 
    return a.reduce((p,c,i) => i%count === 0 ? p.concat([[c]]) : (p[p.length-1].push(c),p),[]); 
 
} 
 

 
var originalArray = [1,2,3,4,5,6,7], 
 
      result = columnize(originalArray,3); 
 
console.log(result);