ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js で forEach ループを途中で終了する方法は?
ネストされたデータ構造を再帰的に走査し、要素ごとに操作を実行する必要がある状況では、再帰と forEach の組み合わせ。ただし、場合によっては、forEach ループを途中で終了する必要がある場合があります。
break または continue ステートメントを含む通常のループとは異なり、forEach には反復を停止する組み込みメカニズムがありません。この動作をシミュレートするために、次の 3 つのアプローチを検討してみましょう。
1. 「醜い」方法: コンテキスト ブール値を使用する
2 番目の引数をコンテキストとして forEach に渡し、そこにブール値を格納します。コールバック関数内でブール値を確認し、必要に応じてブレイクアウトします。このアプローチは視覚的に魅力的ではありません。
<code class="javascript">function recurs(comment) { var stop = false; comment.comments.forEach(function (elem) { recurs(elem); if (...) stop = true; }, stop); }</code>
2. 「物議を醸す」方法: 例外処理
forEach ループを try-catch ブロック内で囲みます。ブレークしたい場合は、例外をスローしてループの外でキャッチします。このアプローチはパフォーマンスに影響を与える可能性があり、コードの可読性に関する懸念を引き起こす可能性があります。
<code class="javascript">try { comment.comments.forEach(function (elem) { recurs(elem); if (...) throw new Error("Stop Iteration"); }); } catch (e) { if (e.message === "Stop Iteration") return; }</code>
3. 「楽しい」方法: Every()
every() を使用する方が良いオプションです。コールバック関数が false を返すまで、コレクションの反復処理を続けます。これは事実上、break ステートメントとして機能します。
<code class="javascript">comment.comments.every(function (elem) { recurs(elem); if (...) return false; return true; });</code>
break に true を返したい場合は、every() の代わりに some() を使用することもできます。
以上がNode.js で forEach ループを途中で終了する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。