この 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
for
JavaScriptでループを早めに止めるには、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
}
}
とはいえ、これについては特定のユースケースではArray
、findIndex
(エントリのインデックスを見つけるため)またはfind
(エントリ自体を見つけるには):
const remIndex = remSize.findIndex((entry) => entry.size === remData.size);
find
コールバックが最初に真理値を返したときに停止し、コールバックが真理値を返した要素を返します (undefined
コールバックが真理値を返さない場合は を返します)。
const remEntry = remSize.find((entry) => entry.size === remData.size);
findIndex
同じことを行いますが、索引コールバックが真の値を返したエントリ、または-1
決して返さなかった場合。
(また、some
関数ですが、ここでは適切ではないでしょう。
ループインについての詳細私の他の答えはこちら。