Maison > interface Web > js tutoriel > Comment quitter prématurément une boucle forEach dans Node.js ?

Comment quitter prématurément une boucle forEach dans Node.js ?

Mary-Kate Olsen
Libérer: 2024-10-17 21:20:30
original
931 Les gens l'ont consulté

How to Prematurely Exit a forEach Loop in Node.js?

Comment interrompre une boucle Node.js forEach

Dans les situations où vous devez parcourir des structures de données imbriquées de manière récursive et exécuter une opération pour chaque élément, vous pouvez utiliser un combinaison de récursivité et forEach. Cependant, il peut y avoir des cas où vous devrez quitter prématurément la boucle forEach.

Contrairement à une boucle normale avec des instructions break ou continue, forEach ne dispose pas d'un mécanisme intégré pour arrêter son itération. Pour simuler ce comportement, explorons trois approches :

1. La manière "laid" : utiliser un booléen contextuel

Passez un deuxième argument à forEach comme contexte et stockez-y une valeur booléenne. Dans la fonction de rappel, vérifiez le booléen et éclatez-le si nécessaire. Cette approche est visuellement peu attrayante.

<code class="javascript">function recurs(comment) {
    var stop = false;
    comment.comments.forEach(function (elem) {
        recurs(elem);
        if (...) stop = true;
    }, stop);
}</code>
Copier après la connexion

2. La méthode « controversée » : gestion des exceptions

Insérez la boucle forEach dans un bloc try-catch. Lorsque vous souhaitez interrompre, lancez une exception et interceptez-la en dehors de la boucle. Cette approche peut avoir un impact sur les performances et soulever des inquiétudes quant à la lisibilité du code.

<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>
Copier après la connexion

3. La méthode « amusante » : utiliser each()

every() est une meilleure option. Il continue à parcourir la collection jusqu'à ce que la fonction de rappel renvoie false. Cela agit efficacement comme une instruction break.

<code class="javascript">comment.comments.every(function (elem) {
    recurs(elem);
    if (...) return false;
    return true;
});</code>
Copier après la connexion

Vous pouvez également utiliser some() au lieu de each() si vous préférez retourner true pour break.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal