要在 JavaScript 的早期停止循环,请使用 break
:for
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)环境中,对于此特定用例,您可以使用 's(查找条目的索引)或 (查找条目本身),这两者都可以填充/多填:Array
findIndex
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;
});
find
在回调首次返回真值时停止,返回回调返回其真值的元素(如果回调从不返回真值,则返回):undefined
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;
});
findIndex
在回调首次返回真值时停止,返回元素的索引而不是元素;如果回调从不返回真值,则返回。-1
如果您使用的是与 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
}
});