200 votes

Comment briser la fonction .chaque en underscore.js

Je suis à la recherche d’un moyen d’arrêter les itérations de la méthode .each() underscore.js, mais impossible de trouver la solution. each() de jQuery peut se briser si vous retournez false. Y a-t-il un moyen d’arrêter le trait de soulignement each() ?

266voto

aeskr Points 1763

Vous ne pouvez pas casser à partir de l' each méthode-il émule le natif forEach comportement de la méthode, et le natif forEach ne fournit pas d'échapper à la boucle (autres que de lancer une exception).

Cependant, tout espoir n'est pas perdu! Vous pouvez utiliser l' Array.every méthode. :)

À partir de ce lien:

every s'exécute à la condition d' callback fonction une fois pour chaque élément présent dans la matrice jusqu'à ce qu'il trouve un endroit où callback renvoie une valeur false. Si un tel élément est trouvé, l' every méthode retourne false.

En d'autres termes, vous pourriez faire quelque chose compliquée comme ceci (lien vers JSFiddle):

[1, 2, 3, 4].every(function(n) {
    alert(n);
    return n !== 3;
});

Cette alerte 1 par 3, puis "pause" en dehors de la boucle.

Vous êtes à l'aide de underscore.js, de sorte que vous serez heureux d'apprendre qu'il n' fournir un every méthode-ils l'appellent every, mais en tant que lien mentionne, ils fournissent également un alias appelé all.

70voto

Nikhil Points 362

Mise à jour :

_.Find serait préférable, car elle brise la boucle lorsque l’élément est trouvé :

Ancienne

Si vous voulez sortir avec une boucle, utilisez .filter api au lieu de .each. Voici un extrait de code

6voto

Rockyboy_ruby Points 83
_([1,2,3]).find(function(v){
    return v if (v==2);
})

3voto

JaredMcAteer Points 5936

Vous ne pouvez pas briser un `` dans le trait de soulignement, comme il émule EcmaScript 5 comportement natif.

3voto

grantwparks Points 716

Peut-être voudrez-vous du trait de soulignement any() ou find(), qui s’arrête le traitement lorsqu’une condition est remplie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X