Dla potomnych: dlaczego pytający powiedział, że zwracanie wartości false nie działa? Praktycznie każda odpowiedź mówi, aby to zrobić. Zastanawiasz się, czy to możliwe, ponieważ to tylko kończy każdą pętlę. Natomiast instrukcja return wewnątrz pętli for kończy wyjście z pętli i funkcji wywołującej . Aby uzyskać tak drastyczne zachowanie z każdej pętli, musisz ustawić flagę z zakresem zamknięcia w każdej pętli, a następnie zareagować na flagę poza nią.
@ Luke101 powinieneś zaktualizować pytanie, aby wyjaśnić, co nie działa. To pytanie nie ma sensu, gdy twoje pytanie mówi, że zaakceptowana odpowiedź nie działa.
Możemy przerwać pętlę $ .each () [..], ustawiając funkcję zwrotną na false.
Zwróć false w wywołaniu zwrotnym:
function callback(indexInArray, valueOfElement){var booleanKeepGoing;this;// == valueOfElement (casted to Object)return booleanKeepGoing;// optional, unless false // and want to stop looping}
BTW, continuedziała tak:
Zwracanie wartości innej niż false jest takie samo, jak instrukcja continu w pętli for; przejdzie natychmiast do następnej iteracji.
Utworzyłem skrzypek dla odpowiedzi na to pytanie, ponieważ zaakceptowana odpowiedź jest nieprawidłowa, a także jest to pierwszy wątek StackOverflow zwrócony przez Google w związku z tym pytaniem.
Aby wyrwać się z każdego $ $ musisz użyć return false;
Natknąłem się na sytuację, w której spełniłem warunek, który spowodował przerwanie pętli, jednak kod po funkcji .each () nadal był wykonywany. Następnie ustawiam flagę na „true”, natychmiast sprawdzając flagę po funkcji .each (), aby upewnić się, że kod, który nastąpił, nie został wykonany.
$('.groupName').each(function(){if($(this).text()== groupname){
alert('This group already exists');
breakOut =true;returnfalse;}});if(breakOut){
breakOut =false;returnfalse;}
„każdy” używa funkcji oddzwaniania. Funkcja oddzwaniania jest wykonywana niezależnie od funkcji wywoływania, więc powrót do funkcji wywoływania z funkcji oddzwaniania nie jest możliwy.
użyj dla pętli, jeśli musisz zatrzymać wykonywanie pętli na podstawie pewnych warunków i pozostać przy tej samej funkcji.
Wiem, że to dość stare pytanie, ale nie widziałem żadnej odpowiedzi, która wyjaśniałaby, dlaczego i kiedy można zerwać ze zwrotem.
Chciałbym wyjaśnić to dwoma prostymi przykładami:
1. Przykład: W tym przypadku mamy prostą iterację i chcemy zerwać z wartością true, jeśli uda nam się znaleźć trzy.
function canFindThree(){for(var i =0; i <5; i++){if(i ===3){returntrue;}}}
jeśli wywołamy tę funkcję, po prostu zwróci prawdę.
2. Przykład W tym przypadku chcemy iterować z każdą funkcją jquery , która przyjmuje jako parametr funkcję anonimową.
function canFindThree(){var result =false;
$.each([1,2,3,4,5],function(key,value){if(value===3){
result =true;returnfalse;//This will only exit the anonymous function and stop the iteration immediatelly.}});return result;//This will exit the function with return true;}
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.