break を呼び出すような Array.forEach の短絡 質問する

break を呼び出すような Array.forEach の短絡 質問する
[1,2,3].forEach(function(el) {
    if(el === 1) break;
});

JavaScript の新しいforEachメソッドを使用してこれを実行するにはどうすればよいですか? を試しましたreturn;、クラッシュ反復処理を続行する以外に何も実行されません。return false;breakbreakreturn

ベストアンサー1

breakを中断する組み込み機能はありませんforEach。実行を中断するには、何らかの例外をスローする必要があります。例:

var BreakException = {};

try {
  [1, 2, 3].forEach(function(el) {
    console.log(el);
    if (el === 2) throw BreakException;
  });
} catch (e) {
  if (e !== BreakException) throw e;
}

JavaScript の例外はあまりきれいではありません。forどうしても例外を内部で処理する必要がある場合は、従来のループの方が適切かもしれませんbreak

使用Array#some

代わりに、Array#some:

[1, 2, 3].some(function(el) {
  console.log(el);
  return el === 2;
});

これが機能するのは、配列の順序で実行されたコールバックのいずれかが を返すとすぐにsomeが返され、残りの実行が省略されるためです。truetrue

some、その逆every( で停止しますreturn false)、および はすべて ECMAScript 第 5 版のメソッドであり、不足しているブラウザーforEachの に追加する必要があります。Array.prototype

おすすめ記事