JavaScript の for ループを停止するにはどうすればいいですか? 質問する

JavaScript の for ループを停止するにはどうすればいいですか? 質問する

この JavaScript を使用して配列を反復処理し、一致する配列要素を検索します。

var remSize = [], 
    szString, remData, remIndex, i;

for (i = 0; i < remSize.length; i++) {      
    // I'm looking for the index i, when the condition is true
    remSize[i].size == remData.size ? remIndex = i : remIndex = -1;     
}

配列には次の「サイズ」が含まれます: ["34", "36", "38"...]

remData.size私が探している「サイズ」(例:「36」)です。

i検索しているサイズがインデックス内にある場合は、インデックスを返す必要があります。そうでない場合は、 を返す必要があります-1。これを行うより良い方法はありますか?

ベストアンサー1

forJavaScriptでループを早めに止めるには、break:

const remSize = [];
let remData;

/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */

let remIndex = -1; // Set a default if we don't find it
for (let i = 0; i < remSize.length; i++) {      
     // I'm looking for the index i, when the condition is true
     if (remSize[i].size === remData.size) {
          remIndex = i;
          break;       // <=== breaks out of the loop early
     }
}

とはいえ、これについては特定のユースケースではArrayfindIndex(エントリのインデックスを見つけるため)またはfind(エントリ自体を見つけるには):

const remIndex = remSize.findIndex((entry) => entry.size === remData.size);

findコールバックが最初に真理値を返したときに停止し、コールバックが真理値を返した要素を返します (undefinedコールバックが真理値を返さない場合は を返します)。

const remEntry = remSize.find((entry) => entry.size === remData.size);

findIndex同じことを行いますが、索引コールバックが真の値を返したエントリ、または-1決して返さなかった場合。

(また、some関数ですが、ここでは適切ではないでしょう。

ループインについての詳細私の他の答えはこちら

おすすめ記事