Щоб зупинити 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
}
});