在数组内动态分组元素

时间:2014-06-02 16:30:37

标签: javascript arrays

我是javascript的新手。我有500个或更多项目的清单。我需要将此数组拆分为子数组,每个子数组包含20个项目。如果有500个项目,每个数组包含20个项目,则为25个数组。我创建了25个数组,如下所示:

var firstSet=[];
var secondSet=[];
.....

我使用for循环填充每个数组。在javascript中如何以编程方式进行编程,因为将来主列表可以返回超过500个项目,并且将来每个子数组应该配置超过20个项目。解决这种情况的最佳解决方案是什么?

2 个答案:

答案 0 :(得分:1)

正如评论所说,你应该用2维数组分割它:

var mainArray=[1,2,3,4,5,6,7,8,9,10];

function splitArray(arr,qty){
    var mainArr=[], subarr=[];
    for(var i=0;i<arr.length;i++){
        subarr.push(arr[i]);
        if( ((i+1) % qty == 0) || i+1==arr.length){
            mainArr.push(subarr);
            subarr=[];
        }
    }
    return mainArr;
}

console.log(splitArray(mainArray,2));

这将创建一个包含5个索引的数组。在每个索引中,您有一个包含2个元素的数组。所以它将它分为[1,2],[3,4],[5,6],[7,8],[9,10]

答案 1 :(得分:-1)

使用嵌套循环从原始数据创建二维数组。

var sets = [];
var items_per_set = 20;
for (var i = 0, outer = 0; i < list.length; i += items_per_set, outer++) {
    sets[outer] = [];
    var limit = Math.min(list.length, i+items_per_set);
    for (j = i; j < limit; j++) {
        sets[outer].push(list[j]);
    }
}