Wie zu stoppen Dart .forEach()?
List data = [1, 2, 3];
data.forEach((value) {
if (value == 2) {
//how to stop?
}
print(value);
});
Versuchte ich return false;
welche in jQuery, aber es funktioniert nicht in Dart.
Gibt es einen Weg, es zu tun?
- Was bedeutet "funktioniert nicht" bedeutet? Was bedeutet es eigentlich?
- Es tut sich nix.
- Wenn Sie sagen, das funktioniert in JavaScript, meinst du eine Bibliothek wie jQuery? Ich Frage, weil es aussieht wie der Algorithmus, der hier beschrieben wird nicht brechen, auf der Wert false zurückgegeben: developer.mozilla.org/en-US/docs/JavaScript/Reference/... Betrachten Sie die Einreichung einen Fehlerbericht, wenn Sie wollen diese Funktion.
- Ja. Du hast Recht. Es geht um jQuery.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie auch ein for/in, die implizit verwendet der iterator treffend demonstriert, in der anderen Antwort:
Ist es auch möglich zu implementieren, dein Beispiel mit forEach() und takeWhile().
Brechen ein
List
Brechen ein
Map
Wenn Sie ' re Umgang mit einem
Map
Sie können nicht einfach bekommen Sie einen iterator, der von der angegebenen Karte, aber Sie können trotzdem einefor
indem Sie entweder die Werte oder die Schlüssel. Da Sie manchmal brauchen könnte die Kombination der beiden Schlüssel und Werte, hier ein Beispiel:Beachten Sie, dass eine Karte, die nicht unbedingt haben, Sie Tasten als
[ 'A', 'B', 'C' ]
verwenden Sie eine LinkedHashMap, wenn Sie wollen, dass. Wenn Sie wollen einfach nur die Werte, nur tunexample.values
stattexample.keys
.Alternativ, wenn Sie nur die Suche nach einem element, können Sie vereinfachen alles zu:
Den Rückruf, forEach nimmt die void zurückgibt, so gibt es keinen Mechanismus zum beenden der iteration.
In diesem Fall sollten Sie mithilfe von Iteratoren:
Dart nicht unterstützt non-local-returns, also der Rückkehr von einem Rückruf wird nicht brechen Sie die Schleife.
Der Grund, warum es funktioniert im jQuery ist, dass jeder() prüft den Rückgabewert der callback.
Dart forEach-callback void zurückgibt.
http://docs.jquery.com/Core/each
basierend auf Greg Lowe post, die ich verwendet, wo für mein Projekt und auch das es funktioniert.