0

我有一个简单的一维数组,但我想使用 jQuery 将长列表分成两列。我怎样才能做到这一点?

var articles = ['article10','article9','article8','article7','article6','article5','article4','article3', 'article2', 'article1'];
for ( var articCounter = articles.length; articCounter > 0; articCounter--) {
    document.write('<a href="../articles/' + articles[articCounter-1] + '.pdf" > ' + articles[articCounter-1] + '</a></br>');  
} // end for

我不想为两个不同的浮点 div 创建两个不同的数组......我已经用谷歌搜索了很多次,但许多其他方法处理多维数组。

非常感谢您提前提供的帮助。

编辑:现在它只是一个长长的列表,如下所示:

第 1 条第 2 条 第 3 条
....

但我想实现这一点:
在此处输入图像描述

4

1 回答 1

3

这会将您的数组拆分为 2 个数组:

var articles = ["article1", "article2", "article3", "article4", "article5", "article6", "article7", "article8", "article9", "article10"];   
var separatorIndex = articles.length & 0x1 ? (articles.length+1)/2 : articles.length/2;

var firstChunk = articles.slice(0,separatorIndex); 
//["article1", "article2", "article3", "article4", "article5"] 
var secondChunk = articles.slice(separatorIndex,articles.length); 
//["article6", "article7", "article8", "article9", "article10"] 

然后你可以在你想要的地方和/或如何使用它们。

解释

第 2 行找到一个锚索引(别名 -> 分割的中间索引),数组应该被分成 2 个块。数组可以有oddeven长度,必须区分这两种情况。由于不可能将奇数长度的数组分成 2 个相等的部分,因此必须以这样的方式进行划分,即第一个块将比第二个块或少1 个元素。这里,我实现了第一种情况,即第一个块将多于 1 个元素,而不是第 2 个。以下是不同情况的示例:

total length | 1st (length) | 2st (length) | separatorIndex 
    10            0-4 (5)        5-9 (5)          5        
    11            0-5 (6)       6-10 (5)          6
    12            0-5 (6)       0-11 (6)          6

在表中,number-number语法相应地显示数组中的开始和结束索引。除法由.slice()函数完成。

于 2012-07-07T21:25:29.583 回答