循环' n'每次迭代中的组中的元素

时间:2014-12-28 03:21:31

标签: javascript arrays

我们说我有这个阵列:

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

示例:我想构建5个数组,每个数组都在其中,因此它变为,

arr1 = [1,2]
arr2 = [2,4]
arr3 = [5,6]

这当然可以用模运算符(%)来解决,因为它们只是成对的 - 所以它变成了:

for (var i = 0; i < arr.length; i++) {
    if(arr[i]%2===0)
    window['arr'+String(i)].push(arr[i],arr[i-1]);//dynamically created array vars
};

还有其他方法,例如嵌套循环等。

我觉得这可以通过更简单的方式解决,所以我希望看到更多建议


这是一种优雅的方式来循环每一个&#39; n&#39;数组中的项目,对它们执行一些操作,然后继续下一个&#39; n&#39;元件。

更新

上面的示例处理10个元素阵列中的2个元素 - 这纯粹是随机的。我没有找到处理数组中对的方法 - 问题是如何循环数组中的每个N元素,对这N个元素执行任何操作并继续接下来的N个元素

我也不打算创建新数组 - 问题只与迭代原始数组有关。

2 个答案:

答案 0 :(得分:4)

使用简单的旧for循环,就像这样

var N = 3;
for (var i = 0; i < array.length; i += N) {
    // Do your work with array[i], array[i+1]...array[i+N-1]
}

答案 1 :(得分:4)

只需在n循环中按for递增:

for (var i = 0; i < arr.length; i += 2)
    console.log(arr[i], arr[i + 1]);

您可以编写一个函数来为n自动遍历数组:

function walk(arr, n, fn) {
    for (var i = 0; i < arr.length; i += n)
        fn(arr.slice(i, i + n));
}

walk([1,2,3,4,5,6], 2, function (segment) {
    console.log(segment);
});