javascript中的异步foreach,步骤为n

javascript中的异步foreach,步骤为n,javascript,node.js,for-loop,foreach,async.js,Javascript,Node.js,For Loop,Foreach,Async.js,如果我运行这个,我将在控制台中得到1,2,…,50 keys = [1, 2, 3, ..., 50]; async.forEach(keys, function (key, callback){ console.log(key); callback(); } 但我想有一个步骤3。我想得到:1,4,7。。。 像这样的for循环: for (let key = 1; key <= 50; key = key + 3) { } for(让key=1;key我不确定什么是a

如果我运行这个,我将在控制台中得到1,2,…,50

keys = [1, 2, 3, ..., 50];
async.forEach(keys, function (key, callback){
    console.log(key);
    callback();
}
但我想有一个步骤3。我想得到:1,4,7。。。 像这样的for循环:

for (let key = 1; key <= 50; key = key + 3) {

}

for(让key=1;key我不确定什么是
async.forEach
,但假设你只是想用你说的3个步骤来做一个普通的
forEach
,我的方法如下:

forEach
并不适用于您操纵索引的用途(特别是在更核心的情况下,您的索引可能会在循环中发生变化),但作为一种快速黑客,您可以执行以下操作:

keys.forEach((key, index) => {
  if(index % 3 === 0) {
  // Only true when it's a multiple of 3
  // Do your loop body
  } 
});

请注意,
forEach
接受回调,其中第一个参数是当前值,可选参数(其中是当前索引)请参见
const res=keys.reduce((acc,elem,i)=>i%3==0?[…acc,elem]:acc,[]);

将为您提供以下内容的结果
res

[1,4,7,10,13,…,48];//每三个索引

其中
i%3
控制步长。因此,如果您希望每次递增4,可以将其更改为
i%4

因此,您可以在代码中这样使用:

keys = [1, 2, 3, ..., 50];
let stepKeys = keys.reduce((acc, elem, i) => i % 3 == 0 ? [...acc, elem] : acc, []);
async.forEach(stepKeys, function (key, callback){
    console.log(key);
    callback();
}

如果
最初设置为
[1,2,3…
,每次迭代只需乘以3并减去即可得到
1,4,7
?这就是你的意思吗?这个答案更加透明