Aby zatrzymać forpętlę na wczesnym etapie w JavaScript, użyj 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
}
}
Jeśli pracujesz w środowisku ES2015 (aka ES6), w tym konkretnym przypadku użycia możesz użyć Array#findIndex(aby znaleźć indeks wpisu) lub Array#find(aby znaleźć sam wpis), z których oba mogą być podkładane / wypełniane:
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#findIndexzatrzymuje się za pierwszym razem, gdy wywołanie zwrotne zwraca prawdziwą wartość, zwracając indeks dla tego wywołania do funkcji zwrotnej; zwraca, -1jeśli wywołanie zwrotne nigdy nie zwróci prawdziwej wartości. Array#findzatrzymuje się również, gdy znajdzie to, czego szukasz, ale zwraca wpis, a nie indeks (lub undefinedjeśli wywołanie zwrotne nigdy nie zwraca prawdziwej wartości).
Jeśli używasz środowiska kompatybilnego z ES5 (lub podkładki ES5), możesz użyć nowej somefunkcji na tablicach, która wywołuje wywołanie zwrotne, dopóki nie zwróci prawdziwej wartości:
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`
}
});
Jeśli używasz jQuery, możesz użyć jQuery.eachpętli przez tablicę; wyglądałoby to tak:
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
}
});