Wie gehst du weiter wie bei for-Schleifen, wenn ich mit einer Schließung in Javascript iteriere

8

Unterstreichen.js gibt es eine Möglichkeit, die einzelnen zu brechen, wenn eine bestimmte Bedingung erfüllt ist?

%Vor%

Ich bin sicher, dass die Rückgabe von false den Trick in prototype.js

gemacht hat     
serby 02.06.2011, 18:48
quelle

4 Antworten

4

Sieht so aus, als müssten Sie breaker zurückgeben, was nicht in dem erwarteten Umfang liegt. Also, ohne _ zu ändern, können Sie nicht einfach aus der Iteration ausbrechen. Die === wird sicherstellen, dass die Rückkehr von {} nicht zum Bruch der Schleife führt; Sie benötigen einen Verweis auf breaker , den Sie nicht haben.

%Vor%     
Stefan Kendall 02.06.2011, 18:52
quelle
4

Ich bin nicht sicher, ob Sie die Schleife tatsächlich stoppen können, aber Sie könnten einen booleschen Befehl verwenden, um den Code in der Schleife daran zu hindern, Folgendes auszuführen:

%Vor%     
tmsimont 02.06.2011 18:52
quelle
2

Sie können nicht. Wie Stefan oben schon sagte, wenn Ihr Browser Array.prototype.forEach nicht unterstützt (was heutzutage eine lange Zeit ist), könnten Sie breaker zurückgeben - wenn Sie Zugriff darauf hätten. Aber leider nicht, weil breaker in einer Schließung in der Bibliothek underscore.js als {} definiert ist.

Leider ist das Verhalten von JavaScript, dass zwei Objekte einander nicht gleich sind, es sei denn, sie sind das exakt gleiche Objekt. Daher ist ({}) === ({}) falsch - und die Rückgabe von {} an Ihre Funktion führt zu keiner Gleichheitsprüfung mit der internen Variable breaker .

Sie können Schleifen also nicht ohne umständliche Methoden wie oben beschrieben ausbrechen. Und nach dem MDC gibt es keine Möglichkeit, das native forEach zu brechen verwendet.

    
Reid 02.06.2011 18:55
quelle
1

Es kann sehr gut sein, dass .each das Überspringen nicht unterstützt.

Sie können es auf dem Umweg tun:

%Vor%

Aber ich bin sicher, dass es eine bessere Funktion dafür gibt.

    
Halcyon 02.06.2011 18:51
quelle

Tags und Links