按可变列数排序数组

Sorting array by variable number of columns

本文关键字:排序 数组      更新时间:2023-09-26

假设我有一个数组

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

你可以这样做。

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]

在功能上可以这样做;

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);