1. ホーム
  2. javascript

[解決済み] Array.forEachでbreakを呼び出すようなショートサーキット

2022-03-15 12:40:20

質問

[1,2,3].forEach(function(el) {
    if(el === 1) break;
});

どうすれば新しい forEach メソッドをJavaScriptで作成することはできますか?試してみたところ return; , return false;break . break クラッシュし return は何もせず、反復を続けます。

どのように解決するのですか?

という機能が組み込まれていません。 breakforEach . 実行を中断するには、ある種の例外を投げる必要があります。

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 は以下を返します。 true 配列順に実行されたコールバックのいずれかが true 残りの実行を短絡させる。

some その逆は every (で停止する)。 return false )、および forEach はすべて ECMAScript 第 5 版のメソッドであり、これを Array.prototype がないブラウザでは