JavaScript 按索引对数组进行垂直排序

标签 javascript arrays sorting indexing

我有这个数组:["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/

相关文章:

Javascript函数未从输入框获取值并循环遍历数组

javascript - 如何通过 ioncache 从数据库为标签处理程序分配标签

c - 无法使用命令行中的数组将字符串连接在一起并在 C 中一次读取一个字符

javascript - 通过数组中的后续位置将字段添加到数组内的对象

c++ - 堆排序 - 哪个堆(最小/最大)用于升序和降序排序?

javascript - Prototype 中 Ajax 请求的默认全局超时是多少?

javascript - 如何在 javascript 或 typescript 字符串中插入变量值?

c - 需要帮助理解此 C 代码(数组)

string - 按固定顺序对选定的部分进行排序 - 空间不受限制

Java如何对multimap进行排序?