短絡的に Array.forEach を呼び出すようにブレーク
[1,2,3].forEach(function(el) {
if(el === 1) break;
});
JavaScriptの新しいforEach
メソッドを使ってどのようにすればよいのでしょうか?私は return;
, return false;
, break
を試しました。break "はクラッシュし、"return "は反復を続けるだけで何もしません。
1416
3
forEach
には、
break`する機能は組み込まれていません。実行を中断するには、ある種の例外を投げなければなりません。JavaScript の例外はあまりきれいではありません。その中で本当に
break
する必要があるなら、伝統的なfor
ループの方が適切かもしれません。Array#some`を使う
代わりに、Array#some`を使用します。
これは、配列順に実行されたコールバックのいずれかが
true
を返すと同時にsome
がtrue
を返し、残りのコールバックの実行を短絡させることで動作します。some
、その逆の [
every][2] (これは
return falseで停止します)、および
forEachはすべて ECMAScript Fifth Edition のメソッドであり、これらが欠けているブラウザでは
Array.prototype` に追加する必要があります。jquery
の
each`メソッドは、コールバック関数内でfalseを返すことができるので、その使用を検討してください。LodashのライブラリにはtakeWhile`というメソッドがあり、map/reduce/foldなどとチェインすることができます。
他のサイトでこの解決策を見つけました。try / catchシナリオでforEachを包むことができます。
詳細はこちら: http://dean.edwards.name/weblog/2006/07/enum/