Kurze Antwort: Verwenden Sie for...breakdiese 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...breakSchleifen zu vermeiden , oder verwenden Sie ihn for...break. Jedes Mal, wenn Sie diese Methoden als for...breakAlternative verwenden, tötet Gott Kätzchen.
Lange Antwort:
.some()und .every()beide geben den booleanWert .some()zurück, truewenn ein Element zurückgegeben wird, für das die übergebene Funktion zurückgegeben wurde true, und jedes, falsewenn 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...breakAlternative 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...breakLoop-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.
returndie 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.