"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment quitter prématurément une boucle forEach dans Node.js ?

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

Publié le 2024-11-08
Parcourir:615

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.

function recurs(comment) {
    var stop = false;
    comment.comments.forEach(function (elem) {
        recurs(elem);
        if (...) stop = true;
    }, stop);
}

2. La manière "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 susciter des inquiétudes quant à la lisibilité du code.

try {
    comment.comments.forEach(function (elem) {
        recurs(elem);
        if (...) throw new Error("Stop Iteration");
    });
} catch (e) {
    if (e.message === "Stop Iteration") return;
}

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 effectivement comme une instruction break.

comment.comments.every(function (elem) {
    recurs(elem);
    if (...) return false;
    return true;
});

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

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729171158. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3