javascriptのforEach関数内で処理を止めるbreakの代わりになるコード

JavaScriptではご存知のように配列などを順々に処理していくのに forEach関数 が使えます。

ただこの forEach で問題なのは途中で処理を止める break みたいなことができないことなんですよね・・・

そこでbreakの代わりになるコードを紹介します。

forEachのおさらい

forEachの使われるのは例えば次のようなコード

この例のように配列の内容を全て関数内で処理するみたいな使われ方がされます。

 

ただforEachと名前がついているもののこれはただの関数なので当然 break とか continue は使えません。

だからもし途中で continue したい場合は次のように途中で  return;  する必要あり

このコードだと配列の要素が 'D' の場合だけ処理が飛ばせます。

 

じゃあ continue break もこれと同じ方法でできるかな?、と思ってしまうんですが実は forEach ではどうやってもそれはできません

いくら  return false; とか  return true; とか書いたとしても無意味です。

ならどうするかというと次で説明するように some関数 と呼ばれるものを使うと上手くいきます。

some関数を代わりに使う

some関数は真の値(true)が返されるまでずっと処理し続ける関数のことです。

つまり処理を中断したいところで  true を返してやれば  break  のように使えるわけです。

例えば次がそのコード例

こうすれば要素が 'D' になった瞬間に処理が止まります。

 

ちなみにsome関数で continue する方法は次のようにforEachの時と全く同じです。

返り値がtrueになったときだけ処理が中断するのでそれ以外の  return false;  か  return;  で返せばいいという訳です。

ここまでのまとめ

ここまでのことをまとめると次の通り

  • forEach内ではどうやっても continue;  できない
  • だからsome関数で return true;  とすればOK

こういうことです。

 

分かってしまうと簡単だけど知らないと悩んでしまいますよね。ではまた($・・)/~~~

Shareこの記事をシェアしよう!

Commentsこの記事についたコメント

2件のコメント
  • dummy

    > じゃあ continue もこれと同じ方法でできるかな?、と思ってしまうんです

    > forEach内ではどうやっても continue; できない

    break の間違いでは?

    10月 23, 2021 5:49 pm
    • ぴー助

      ご指摘ありがとうございます。m(__)m
      本来はbreakと書くべき所でした。
      修正したいと思います。

      10月 24, 2021 7:22 am

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください