Para detener un for
ciclo temprano en JavaScript, usa 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
}
}
Si se encuentra en un entorno ES2015 (también conocido como ES6), para este caso de uso específico , puede usar Array#findIndex
(para encontrar el índice de la entrada) o Array#find
(para encontrar la entrada en sí), los cuales pueden ser calzados / rellenados:
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
se detiene la primera vez que la devolución de llamada devuelve un valor verdadero, devolviendo el índice de esa llamada a la devolución de llamada; vuelve -1
si la devolución de llamada nunca devuelve un valor verdadero. Array#find
también se detiene cuando encuentra lo que está buscando, pero devuelve la entrada, no su índice (o undefined
si la devolución de llamada nunca devuelve un valor verdadero).
Si está utilizando un entorno compatible con ES5 (o una cuña ES5), puede usar la nueva some
función en matrices, que llama a una devolución de llamada hasta que la devolución de llamada devuelva un valor verdadero:
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`
}
});
Si está usando jQuery, puede usar jQuery.each
para recorrer una matriz; eso se vería así:
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
}
});