【问题标题】:Continue inside a forEach loop在 forEach 循环中继续
【发布时间】:2022-08-09 23:10:27
【问题描述】:

如果满足/未满足某个条件,则在循环内continue 是标准做法。在 Javascript forEach 循环中,这会产生语法错误:

const values = [1, 2, 3, 4, 5];
values.forEach((value) => {
    if (value === 3) { continue; }
    console.log(value);
})
SyntaxError[ ... ]: Illegal continue statement: no surrounding iteration statement

无论我使用function 还是箭头函数,都会发生这种情况。你怎么能在forEach 循环中continue

显然,你可以做一个反例(if (value !== 3) { ... }),但这不是我要找的。

  • 使用return 而不是continue
  • forEach() 不是循环,而是函数。如果你想要一个循环,请使用for (const value of values) { … }
  • @Ouroborus return 而不是 continue 确实可以正常工作(+1)-但是,它的行为并不是立即显而易见的。很容易认为您正在返回父函数而不是 forEach 中的箭头函数。

标签: javascript loops


【解决方案1】:

正如@robertklep 所说, forEach() 不是循环,它是一个函数。您不能在 forEach 循环中使用 continue 关键字,因为它的功能是循环数组中的每个项目。

要实现您可以使用的类似行为,

  for(let item of values){
     if (item === 3) { 
      continue;
     }
     console.log(item);
  }

【讨论】:

【解决方案2】:

出于实际目的,forEach() 回调中的 return 等效于传统 for 循环中的 continue,但它不是函数式编程模式最惯用的用法

为了解决这个问题,您可以在循环之前进行过滤:

const values = [1, 2, 3, 4, 5];
values.filter(v => v !== 3).forEach((value) => {
    console.log(value);
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多