J'ai une boucle foreach angulaire et je veux rompre la boucle si je correspond à une valeur. Le code suivant ne fonctionne pas.
angular.forEach([0,1,2], function(count){
if(count == 1){
break;
}
});
Comment puis-je l'obtenir?
angularjs
javascript-framework
Garçon grassouillet
la source
la source
Réponses:
Il n'y a aucun moyen de le faire. Voir https://github.com/angular/angular.js/issues/263 . Selon ce que vous faites, vous pouvez utiliser un booléen pour ne pas entrer dans le corps de la boucle. Quelque chose comme:
la source
!keepGoing && return;
en haut de la fonction, moins de code.La
angular.forEach
boucle ne peut pas se rompre lors d'une correspondance de condition.Mon conseil personnel est d'utiliser une boucle NATIVE FOR au lieu de
angular.forEach
.La boucle NATIVE FOR est environ 90% plus rapide que les autres boucles for.
UTILISER POUR boucle en ANGULAIRE:
la source
veuillez utiliser certaines ou toutes les instances de ForEach,
Exemple pour certains:
Exemple pour chaque:
Trouvez plus d'informations
http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/
la source
Utilisez la méthode Array Some
existe renverra true, et vous pouvez l'utiliser comme variable dans votre fonction
Array Some Method - Javascript
la source
angular.forEach()
est que je dois prendre en charge IE8, qui n'a pasArray.forEach()
... ouArray.some()
.Pour autant que je sache, Angular ne fournit pas une telle fonction. Vous pouvez utiliser des soulignements
find()
fonction pour cela (c'est essentiellement un forEach qui sort de la boucle une fois que la fonction retourne true).http://underscorejs.org/#find
la source
Si vous utilisez jQuery (donc pas jqLite) en conjonction avec AngularJS, vous pouvez itérer avec $ .each - qui permet de casser et de continuer en fonction de l'expression de la valeur de retour booléenne.
JSFiddle:
http://jsfiddle.net/JEcD2/1/
Javascript:
Remarque:
Bien que l'utilisation de jQuery ne soit pas mauvaise, les fonctions natives Array.some ou Array.every sont recommandées par MDN comme vous pouvez le lire dans la documentation native forEach :
Les exemples suivants sont fournis par MDN:
Array.some:
Array.every:
la source
Concrètement, vous pouvez sortir d'une
forEach
boucle, et de n'importe quel endroit, lever une exception.Cependant, il vaut mieux utiliser une autre bibliothèque ou implémenter votre propre fonction, un
find
fonction dans ce cas, donc votre code est le plus haut niveau.la source
Essayez ceci comme pause;
la source
Comme les autres réponses l'indiquent, Angular ne fournit pas cette fonctionnalité. jQuery le fait cependant, et si vous avez chargé jQuery ainsi que Angular, vous pouvez utiliser
Voir http://api.jquery.com/jquery.each/
la source
Normalement, il n'y a aucun moyen de rompre une boucle "each" en javascript. Ce qui peut être fait habituellement est d'utiliser la méthode du "court-circuit".
la source
break
n'est pas possible à réaliser en forEach angulaire, nous devons modifier forEach pour ce faire.la source
break()
doit être définie ou si elle fait déjà partie de l'angulaire. Veuillez définir sinon.Vous pouvez utiliser ceci:
la source
la source
la source
Je préfère le faire par retour. Mettez la partie en boucle dans une fonction privée et revenez quand vous voulez rompre la boucle.
la source
Je me rends compte que c'est vieux, mais un filtre matriciel peut faire ce dont vous avez besoin:
Vous pouvez ensuite exécuter
arr.forEach
et d'autres fonctions de tableau.Je me rends compte que si vous avez l'intention de réduire complètement les opérations de boucle, cela ne fera probablement pas ce que vous voulez. Pour cela, vous l'utilisez au mieux
while
.la source
Cet exemple fonctionne. Essayez-le.
la source
for
boucle, son cas d'utilisation a besoin d'unforeach
pasfor
probablementUtilisez Retour pour rompre la boucle.
la source
la source
J'utiliserais
return
au lieu debreak
.Fonctionne comme un charme.
la source
Ajoutez simplement $ index et procédez comme suit:
la source