我有这个数组:["A","B","C","D","E","F","G","H","I","J","K"、"L"、"M"、"N"、"O"、"P"、"Q"、"R"、"S"、"T"、"U"、"V"、"W","X","Y","Z"]
我从服务器获取要显示的列数,在本例中我选择了 3。
到目前为止,我的这个函数工作正常,除非我的索引等于数组长度,否则顺序会出现问题,而且我不知道如何修复它。
var i;
var j;
var columns = window.columns; //3 for the example.
var lettersArray= ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
var rows = Math.ceil(lettersArray.length/columns);
到目前为止我有这个:
for (i = 0; i < rows; i++)
{
for (j=0; j < lettersArray.length; j=j+rows)
{
var index = i+j;
if (index>=lettersArray.length)
{
break;
}
else
{
PrintArray(lettersArray, index);
}
}
}
PrintArray 函数在排序后接收索引和数组,它最终看起来像这样:
A J S
B K T
C L U
D M V
E N W
F O X
G P Y
H Q Z
I R
但是在某个地方出了问题,看起来像:
A J S
B K T
C L U
D M V
I N W
F O X
G P Y
H Q R
E Z
最佳答案
您的意思是您希望通过row + col * rows
迭代每个项目。您也不能在未定义上停止,因为您可能还有更多行需要处理。
以下是您可以如何执行此操作的示例,
function foo(data, cols) {
var rows = Math.ceil(data.length / cols);
var col, row;
for (row = 0; row < rows; ++row)
for (col = 0; col < cols; ++col)
console.log(data[row + col * rows] || '');
}
其中 console.log
正在记录下一个项目或 ||
空字符串。
关于JavaScript 按索引对数组进行垂直排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33944349/