for
JavaScriptの早い段階でループを停止するには、次を使用しますbreak
。
var remSize = [],
szString,
remData,
remIndex,
i;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = -1; // Set a default if we don't find it
for (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
}
}
ES2015(別名ES6)環境の場合、この特定の使用例では、Array#findIndex
(エントリのインデックスArray#find
を見つける)または(エントリ自体を見つける)を使用できます。どちらもシム/ポリフィルできます。
var remSize = [],
szString,
remData,
remIndex;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = remSize.findIndex(function(entry) {
return entry.size === remData.size;
});
Array#find
:
var remSize = [],
szString,
remData,
remEntry;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remEntry = remSize.find(function(entry) {
return entry.size === remData.size;
});
Array#findIndex
コールバックが真の値を初めて返したときに停止し、コールバックへのその呼び出しのインデックスを返します。-1
コールバックが真の値を返さない場合に返されます。Array#find
探しているものが見つかると停止しますが、インデックスではなくエントリを返します(またはundefined
コールバックが真の値を返さない場合)。
ES5互換環境(またはES5シム)を使用している場合は、配列で新しいsome
関数を使用できます。これは、コールバックが真の値を返すまでコールバックを呼び出します。
var remSize = [],
szString,
remData,
remIndex;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = -1; // <== Set a default if we don't find it
remSize.some(function(entry, index) {
if (entry.size === remData.size) {
remIndex = index;
return true; // <== Equivalent of break for `Array#some`
}
});
jQueryを使用jQuery.each
している場合は、を使用して配列をループできます。これは次のようになります。
var remSize = [],
szString,
remData,
remIndex;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = -1; // <== Set a default if we don't find it
jQuery.each(remSize, function(index, entry) {
if (entry.size === remData.size) {
remIndex = index;
return false; // <== Equivalent of break for jQuery.each
}
});