Maison  >  Article  >  interface Web  >  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
Mary-Kate Olsenoriginal
2024-10-17 21:20:30790parcourir

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>

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>

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>

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!

Déclaration:
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