Ich habe eine eckige foreach-Schleife und möchte von der Schleife abbrechen, wenn ich mit einem Wert übereinstimme. Der folgende Code funktioniert nicht.
angular.forEach([0,1,2], function(count){
if(count == 1){
break;
}
});
Wie kann ich das bekommen?
angularjs
javascript-framework
Molliger Junge
quelle
quelle
Antworten:
Es gibt keine Möglichkeit, dies zu tun. Siehe https://github.com/angular/angular.js/issues/263 . Je nachdem, was Sie tun, können Sie einen Booleschen Wert verwenden, um nicht in den Körper der Schleife zu gelangen. Etwas wie:
quelle
!keepGoing && return;
am Anfang der Funktion hinzufügen , weniger Code.Das
angular.forEach
Schleife kann bei einer Bedingungsübereinstimmung nicht unterbrochen werden.Mein persönlicher Rat ist, stattdessen eine NATIVE FOR- Schleife zu verwenden
angular.forEach
.Die NATIVE FOR-Schleife ist etwa 90% schneller als andere for-Schleifen.
GEBRAUCH FÜR FOR-Schleife IN ANGULAR:
quelle
Bitte verwenden Sie einige oder alle Instanzen von ForEach.
Beispiel für einige:
Beispiel für jeden:
Weitere Informationen finden Sie unter
http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/
quelle
Verwenden Sie die Array Some-Methode
exist gibt true zurück und Sie können dies als Variable in Ihrer Funktion verwenden
Array Einige Methode - Javascript
quelle
angular.forEach()
dass ich IE8 unterstützen muss, das nicht hatArray.forEach()
... oderArray.some()
.Soweit ich weiß, bietet Angular eine solche Funktion nicht an. Möglicherweise möchten Sie hierfür die
find()
Funktion des Unterstrichs verwenden (es handelt sich im Grunde genommen um ein forEach, das aus der Schleife ausbricht, sobald die Funktion true zurückgibt).http://underscorejs.org/#find
quelle
Wenn Sie jQuery (daher nicht jqLite) in Verbindung mit AngularJS verwenden, können Sie mit $ .each iterieren. Dies ermöglicht das Unterbrechen und Fortfahren basierend auf dem booleschen Rückgabewertausdruck.
JSFiddle:
http://jsfiddle.net/JEcD2/1/
Javascript:
Hinweis:
Obwohl die Verwendung von jQuery nicht schlecht ist, werden von MDN sowohl native Array.some- als auch Array.every- Funktionen empfohlen, wie Sie in der nativen forEach- Dokumentation lesen können :
Folgende Beispiele werden von MDN bereitgestellt:
Array.some:
Array.every:
quelle
Konkret können Sie eine
forEach
Schleife verlassen und an jedem Ort eine Ausnahme auslösen.Es ist jedoch besser, wenn Sie eine andere Bibliothek verwenden oder Ihre eigene Funktion implementieren,
find
in diesem Fall eine Funktion, damit Ihr Code auf höchstem Niveau ist.quelle
Versuchen Sie dies als Pause;
quelle
Wie in den anderen Antworten angegeben, bietet Angular diese Funktionalität nicht an. jQuery funktioniert jedoch, und wenn Sie jQuery sowie Angular geladen haben, können Sie verwenden
Siehe http://api.jquery.com/jquery.each/
quelle
Normalerweise gibt es keine Möglichkeit, eine "jede" Schleife in Javascript zu unterbrechen. Was normalerweise getan werden kann, ist die Verwendung der "Kurzschluss" -Methode.
quelle
break
ist nicht in eckigem forEach zu erreichen, wir müssen forEach modifizieren, um das zu tun.quelle
break()
definiert werden muss oder ob es bereits Teil des Winkels ist. Bitte definieren Sie, wenn nicht.Sie können dies verwenden:
quelle
quelle
quelle
Ich würde es vorziehen, dies im Gegenzug zu tun. Setzen Sie den Schleifenteil in die private Funktion und kehren Sie zurück, wenn Sie die Schleife unterbrechen möchten.
quelle
Mir ist klar, dass dies alt ist, aber ein Array-Filter kann genau das tun, was Sie brauchen:
Sie können dann
arr.forEach
und andere Array-Funktionen ausführen .Mir ist klar, dass wenn Sie beabsichtigen, die Schleifenoperationen insgesamt zu reduzieren, dies wahrscheinlich nicht das tut, was Sie wollen. Dafür verwenden Sie am besten
while
.quelle
Dieses Beispiel funktioniert. Versuch es.
quelle
for
Schleife will , sein Anwendungsfall braucht eineforeach
nichtfor
wahrscheinlichVerwenden Sie Return, um die Schleife zu unterbrechen.
quelle
quelle
Ich würde
return
anstelle von verwendenbreak
.Klappt wunderbar.
quelle
Fügen Sie einfach $ index hinzu und gehen Sie wie folgt vor:
quelle