如果我运行这个,我会得到1,2,…,50在我的控制台。
keys = [1, 2, 3, ..., 50];
async.forEach(keys, function (key, callback){
console.log(key);
callback();
}但我想第三步。我想得到: 1,4,7,……像这样的循环:
for (let key = 1; key <= 50; key = key + 3) {
}如何使用异步实现这一目标?
发布于 2018-11-18 07:36:40
const res = keys.reduce((acc, elem, i) => i % 3 == 0 ? [...acc, elem] : acc, []);
将给出结果res:
[1, 4, 7, 10, 13, ..., 48]; // Every 3rd index
其中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();
}发布于 2018-11-18 07:24:31
我不知道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接受回调(第一个参数是当前值)和可选参数(其中包括当前索引),请参见文档
https://stackoverflow.com/questions/53358688
复制相似问题