ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js で forEach ループを途中で終了する方法は?

Node.js で forEach ループを途中で終了する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-17 21:20:30922ブラウズ

How to Prematurely Exit a forEach Loop in Node.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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。