Mam kątową pętlę foreach i chcę zerwać z pętli, jeśli dopasuję wartość. Poniższy kod nie działa.
angular.forEach([0,1,2], function(count){
if(count == 1){
break;
}
});
Jak mogę to zdobyć?
angularjs
javascript-framework
Pulchny chłopiec
źródło
źródło
Odpowiedzi:
Nie ma na to sposobu. Zobacz https://github.com/angular/angular.js/issues/263 . W zależności od tego, co robisz, możesz użyć wartości logicznej, aby po prostu nie wchodzić w ciało pętli. Coś jak:
źródło
!keepGoing && return;
na górze funkcji, mniej kodu.angular.forEach
Pętla nie może złamać na stan meczu.Moją osobistą radą jest użycie zamiast tego pętli NATIVE FOR
angular.forEach
.Pętla NATIVE FOR jest około 90% szybsza niż inne dla pętli.
UŻYJ DO PĘTLI W KĄTU:
źródło
użyj niektórych lub wszystkich wystąpień ForEach,
Przykład dla niektórych:
Przykład dla każdego:
Znajdź więcej informacji
http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/
źródło
Użyj metody Array Some
istnieje, zwróci true, i możesz użyć tego jako zmiennej w swojej funkcji
Array Some Method - JavaScript
źródło
angular.forEach()
jest to, że muszę obsługiwać IE8, który nie maArray.forEach()
... lubArray.some()
.O ile mi wiadomo, Angular nie zapewnia takiej funkcji. Możesz do tego użyć
find()
funkcji podkreślenia (jest to w zasadzie forEach, który wyłamuje się z pętli, gdy funkcja zwróci wartość true).http://underscorejs.org/#find
źródło
Jeśli używasz jQuery (stąd nie jqLite) w połączeniu z AngularJS, możesz iterować z $ .each - co pozwala na łamanie i kontynuowanie w oparciu o wyrażenie logiczne.
JSFiddle:
http://jsfiddle.net/JEcD2/1/
JavaScript:
Uwaga:
Chociaż za pomocą jQuery nie jest zła, zarówno rodzimych Array.some lub Array.every funkcje są zalecane przez MDN jak można przeczytać na rodzimym foreach dokumentacji:
MDN zapewnia następujące przykłady:
Array.some:
Array.every:
źródło
Konkretnie, możesz wyjść z
forEach
pętli i z dowolnego miejsca, rzucić wyjątek.Lepiej jest jednak użyć innej biblioteki lub zaimplementować własną funkcję,
find
w tym przypadku funkcję, więc kod ma najwyższy poziom.źródło
Spróbuj tego jako przerwy;
źródło
Jak podają inne odpowiedzi, Angular nie zapewnia tej funkcjonalności. jQuery działa jednak, a jeśli załadowałeś jQuery oraz Angular, możesz użyć
Zobacz http://api.jquery.com/jquery.each/
źródło
Zwykle nie ma sposobu na przerwanie pętli „each” w javascript. Co zwykle można zrobić, to zastosować metodę „zwarcia”.
źródło
break
nie jest możliwe do osiągnięcia w forEach kątowym, musimy zmodyfikować forEach, aby to zrobić.źródło
break()
należy zdefiniować, czy jest to już część kąta. Proszę określić, jeśli nie.Możesz użyć tego:
źródło
źródło
źródło
Wolałbym to zrobić w drodze powrotnej. Umieść część zapętloną w funkcji prywatnej i wróć, gdy chcesz przerwać pętlę.
źródło
Wiem, że to stare, ale filtr tablicowy może zrobić to, czego potrzebujesz:
Następnie można uruchomić
arr.forEach
i inne funkcje tablicowe.Zdaję sobie sprawę, że jeśli zamierzasz całkowicie ograniczyć operacje na pętli, prawdopodobnie nie zrobi to, co chcesz. Do tego najlepiej wykorzystać
while
.źródło
Ten przykład działa. Spróbuj.
źródło
for
pętli, jego przypadek użyciaforeach
nie wymagafor
chybaUżyj Return, aby przerwać pętlę.
źródło
źródło
Użyłbym
return
zamiastbreak
.Działa jak marzenie.
źródło
Po prostu dodaj $ index i wykonaj następujące czynności:
źródło