转到 JavaScript forEach 循环中的“下一个”迭代 [重复]

Posted

技术标签:

【中文标题】转到 JavaScript forEach 循环中的“下一个”迭代 [重复]【英文标题】:Go to "next" iteration in JavaScript forEach loop [duplicate] 【发布时间】: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 跳过迭代" 的第一个搜索结果 【参考方案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;

以上是关于转到 JavaScript forEach 循环中的“下一个”迭代 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用setTimeout跳转到(Typescript).forEach循环中的下一次迭代

(JavaScript) 将 forEach 循环与内部回调同步

JavaScript中如何中断forEach循环

交替循环嵌套的foreach循环

在laravel中使用javascript进行foreach循环

forEach 在javascript中同时循环遍历两个数组[重复]