【问题标题】:Javascript how to iterate an array with iteration step 4Javascript如何使用迭代步骤4迭代数组
【发布时间】:2019-07-28 09:28:14
【问题描述】:

当我们不得不迭代我们编写的数组时,以 C/C++ 方式编写代码

for(int index = 0; index < array.size(); index++) {
     doSomething(index);
}

当需要迭代 4 时,我们编写了

for(int index = 0; index < array.size(); index = index + 4) {
     doSomething(1, index);
     doSomething(2, index+1);
     doSomething(3, index+2);
     doSomething(4, index+3);
}

如何使用 JavaScript 的 map reduce 或 filter 数组函数来实现这一点?

【问题讨论】:

  • 为什么要使用mapreducefilter?不使用常规 for 循环或迭代器是否有任何合乎逻辑的理由?这三个原型都不是为此目的而制造的。

标签: javascript arrays for-loop filter reduce


【解决方案1】:

您可以使用 JavaScript 中的普通循环来完成:

for(let index = 0; index < array.length; index += 4) {
     doSomething(1, index);
     doSomething(2, index + 1);
     doSomething(3, index + 2);
     doSomething(4, index + 3);
}

还有forEach 和模数:

array.forEach((e, i) => {
  if (!(i % 4)) return;
  doSomething(1, i);
  doSomething(2, i + 1);
  doSomething(3, i + 2);
  doSomething(4, i + 3);
});

【讨论】:

  • “还有 forEach 和模数”...不,这在这里没有什么意义。
  • 我知道@JonasWilms - OP 也想要一个基于方法的解决方案,所以这是我的方法。然而,第一个是我的首选方法。
【解决方案2】:

您无法使用 mapfilter 或其他数组函数来实现此目的,因为它们对数组的每个元素都做了一些事情。

但您可以使用与c/c++ 中使用的相同语法来实现此目的,并带有for loop

for(let index = 0; index < array.length; index += 4) {
     console.log(index);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2017-08-03
    • 2015-03-09
    • 1970-01-01
    • 2015-03-14
    • 2014-10-05
    • 2021-06-05
    相关资源
    最近更新 更多