Per interrompere un for
ciclo all'inizio in JavaScript, utilizzare 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
}
}
Se ti trovi in un ambiente ES2015 (noto anche come ES6), per questo caso d'uso specifico , puoi usare Array#findIndex
(per trovare l'indice della voce) o Array#find
(per trovare la voce stessa), entrambi possono essere shimati / polyfilled:
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
si ferma la prima volta che il callback restituisce un valore true, restituendo l'indice per quella chiamata al callback; restituisce -1
se il callback non restituisce mai un valore vero. Array#find
si ferma anche quando trova quello che stai cercando, ma restituisce la voce, non il suo indice (o undefined
se il callback non restituisce mai un valore veritiero).
Se stai utilizzando un ambiente compatibile con ES5 (o uno shim ES5), puoi utilizzare la nuova some
funzione sugli array, che chiama un callback finché il callback non restituisce un valore vero:
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`
}
});
Se stai usando jQuery, puoi usare jQuery.each
per scorrere un array; sarebbe simile a questo:
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
}
});