转到javascript forEach循环中的"next"迭代

Don*_*n P 167 javascript foreach

如何进入Javascript Array.forEach()循环的下一次迭代?

例如:

var myArr = [1, 2, 3, 4];

myArr.forEach(function(elem){
  if (elem === 3) {
    // Go to "next" iteration. Or "continue" to next iteration...
  }

  console.log(elem);
});
Run Code Online (Sandbox Code Playgroud)

我真的很惊讶这不是一个问题 - 所以搜索没有任何结果,与建议的答案一样.MDN文档只提到完全打破循环,而不是转向下一次迭代.

rid*_*rid 294

您可以简单地return想跳过当前的迭代.

因为你在一个函数中,如果你return在做任何其他事情之前,那么你实际上已经跳过了return语句下面的代码的执行.

  • 事实上,它真的不是一个黑客.它应该是如何工作的. (68认同)
  • 如果有些人没有看到其他答案中的某些解释,则此解决方案仅适用于 forEach 循环,而不适用于传统的 for 循环。For Each 循环为数组中的每个元素执行回调函数,因此 return 将继续前进到下一个元素/回调。 (5认同)
  • 不错的黑客.我也会选择这条路线.无论如何,有些人(特别是初学者)可能会将其误解为停止标准. (2认同)

Chr*_*son 56

JavaScript的forEach与每个循环使用其他语言的方式略有不同.如果在MDN上读取,则表示按升序对数组中的每个元素执行一个函数.要继续下一个元素,即运行下一个函数,您只需返回当前函数而无需进行任何计算.

添加一个返回,它将进入循环的下一次运行:

var myArr = [1,2,3,4];

myArr.forEach(function(elem){
  if (elem === 3) {
    return;
  }

  console.log(elem);
});
Run Code Online (Sandbox Code Playgroud)

输出:1,2,4


dim*_*hik 5

只要在您的if语句内返回true

var myArr = [1,2,3,4];

myArr.forEach(function(elem){
  if (elem === 3) {

      return true;

    // Go to "next" iteration. Or "continue" to next iteration...
  }

  console.log(elem);
});
Run Code Online (Sandbox Code Playgroud)

  • 不需要`true`。只是“返回;” (11认同)