按可变数量的列对数组进行排序

时间:2016-09-16 20:07:44

标签: javascript arrays algorithm

说我有一个数组

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

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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);