【问题标题】:Go to "next" iteration in JavaScript forEach loop [duplicate]转到 JavaScript forEach 循环中的“下一个”迭代 [重复]
【发布时间】:2015-10-02 15:56:44
【问题描述】:

如何进入 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);
});

MDN docs 只提到完全跳出循环,而不是进入下一次迭代。

【问题讨论】:

  • 不要使用 SO 搜索。改用谷歌。这是 "javascript foreach 跳过迭代" 的第一个搜索结果

标签: javascript foreach


【解决方案1】:

如果你想跳过当前的迭代,你可以简单地return

由于您在一个函数中,如果您在执行任何其他操作之前先return,那么您实际上已经跳过了return 语句下面的代码的执行。

【讨论】:

  • 不错的技巧。我也会选择这条路线。无论如何,有些人(尤其是初学者)可能会将其误解为停止标准。
  • 事实上,它真的不是 hack。这就是它应该如何工作的方式。
  • 我没有使用它,而是试图让类似“继续”的东西工作但没有任何成功。谢谢你提醒我:)。
  • 如果有些人在其他答案中看不到某些解释,则此解决方案仅适用于 forEach 循环,不适用于传统的 for 循环。 For Each 循环为数组中的每个元素执行回调函数,因此 return 只会移动到下一个元素/回调。
  • 当然。如果您使用.forEach((arg) => {}); 语法,它可能不太明显。
【解决方案2】:

对于每个循环,JavaScript 的 forEach 的工作方式与使用其他语言的方式略有不同。如果在MDN 上阅读,它表示对数组中的每个元素执行一个函数,按升序排列。要继续下一个元素,即运行下一个函数,您可以简单地返回当前函数,而无需它进行任何计算。

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

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

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

  console.log(elem);
});

输出:1、2、4

【讨论】:

  • 'return' 不适用于 forEach,但它适用于 for(let itemIndex in array)
  • @SunnySharma 工作正常吗? returnforEach 不能很好地配合使用?
【解决方案3】:

只需在 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);
});

【讨论】:

  • 不需要true。只需return;
猜你喜欢
  • 2020-02-20
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
相关资源
最近更新 更多