最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Continue inside a forEach loop - Stack Overflow

programmeradmin1浏览0评论

It is standard practice to continue inside a loop if a certain condition is met/unmet. In a Javascript forEach loop, this produces a syntax error:

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

This happens whether I use function or an arrow function. How can you continue inside a forEach loop?

Obviously, you could do an inverse case (if (value !== 3) { ... }), but that is not what I'm looking for.

It is standard practice to continue inside a loop if a certain condition is met/unmet. In a Javascript forEach loop, this produces a syntax error:

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

This happens whether I use function or an arrow function. How can you continue inside a forEach loop?

Obviously, you could do an inverse case (if (value !== 3) { ... }), but that is not what I'm looking for.

Share Improve this question asked Jun 27, 2022 at 16:51 Chris CollettChris Collett 1,28912 silver badges18 bronze badges 3
  • 8 Use return rather than continue. – Ouroborus Commented Jun 27, 2022 at 16:54
  • 4 forEach() isn't a loop, it's a function. If you want a loop, use for (const value of values) { … } – robertklep Commented Jun 27, 2022 at 16:54
  • @Ouroborus return rather than continue does work correctly (+1) - it's behavior is not immediately obvious, however. It's easy to think that you are returning the parent function instead of the arrow function within the forEach. – Chris Collett Commented Jun 27, 2022 at 18:13
Add a ment  | 

3 Answers 3

Reset to default 3

For practical purposes, return in a forEach() callback is equivalent to continue in a conventional for loop but it isn't the most idiomatic use of functional programming patterns

To solve that, you can filter before you loop:

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

in forEach method you can use return, it will work like continue in a loop

https://developer.mozilla/en-US/docs/Web/JavaScript/Reference/Errors/Bad_continue

As @robertklep stated forEach() is not a loop, it is a function. You cannot use the continue keyword inside a forEach loop because its functionality is meant to loop each item in the array.

To achieve the similar behavior you can use,

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

评论列表(0)

  1. 暂无评论