我们说我有这个阵列:
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个元素
我也不打算创建新数组 - 问题只与迭代原始数组有关。
答案 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);
});