转到 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 工作正常吗?return
与 forEach
不能很好地配合使用?【参考方案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 循环与内部回调同步