Kurze Antwort: Verwenden Sie for...break
diese Option oder ändern Sie Ihren Code, um ein Brechen zu vermeiden forEach
. Nicht verwenden .some()
oder .every()
emulieren for...break
. Schreiben Sie Ihren Code neu, um for...break
Schleifen zu vermeiden , oder verwenden Sie ihn for...break
. Jedes Mal, wenn Sie diese Methoden als for...break
Alternative verwenden, tötet Gott Kätzchen.
Lange Antwort:
.some()
und .every()
beide geben den boolean
Wert .some()
zurück, true
wenn ein Element zurückgegeben wird, für das die übergebene Funktion zurückgegeben wurde true
, und jedes, false
wenn ein Element zurückgegeben wird, für das die übergebene Funktion zurückgegeben wurde false
. Das ist es, was diese Funktionen bedeuten. Die Verwendung von Funktionen für das, was sie nicht bedeuten, ist viel schlimmer als die Verwendung von Tabellen für das Layout anstelle von CSS, da dies jeden frustriert, der Ihren Code liest.
Die einzige Möglichkeit, diese Methoden als for...break
Alternative zu verwenden, besteht darin, Nebenwirkungen zu verursachen (einige Variablen außerhalb der .some()
Rückruffunktion zu ändern ), und dies unterscheidet sich nicht wesentlich von for...break
.
Die Verwendung von .some()
oder .every()
als for...break
Loop-Alternative ist also nicht frei von Nebenwirkungen. Dies ist dann nicht viel sauberer for...break
. Dies ist frustrierend und daher nicht besser.
Sie können Ihren Code jederzeit neu schreiben, sodass keine Notwendigkeit besteht for...break
. Sie können das Array mit filtern .filter()
, das Array mit .slice()
usw. teilen und dann .forEach()
oder .map()
für diesen Teil des Arrays verwenden.
return
die Iteration zwar fortgesetzt wird, jedoch der nachfolgende Code im Block übersprungen wird. Nehmen Sie zum Beispiel diesen Code:[1,2,3].forEach(function(el) { if(el === 2) { console.log(`Match on 2!`); return; } console.log(el); });
.Derconsole.log(el);
wird übersprungen, wenn 2 übereinstimmt.