Pour arrêter une for
boucle tôt dans JavaScript, vous utilisez 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 vous êtes dans un environnement ES2015 (alias ES6), pour ce cas d'utilisation spécifique , vous pouvez utiliser Array#findIndex
(pour trouver l'index de l'entrée) ou Array#find
(pour trouver l'entrée elle-même), qui peuvent tous deux être shimmed / 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
s'arrête la première fois que le rappel renvoie une valeur de vérité, renvoyant l'index de cet appel au rappel; il retourne -1
si le rappel ne renvoie jamais de valeur de vérité. Array#find
s'arrête également quand il trouve ce que vous cherchez, mais il renvoie l'entrée, pas son index (ou undefined
si le rappel ne renvoie jamais une valeur de vérité).
Si vous utilisez un environnement compatible ES5 (ou un shim ES5), vous pouvez utiliser la nouvelle some
fonction sur les tableaux, qui appelle un rappel jusqu'à ce que le rappel renvoie une valeur de vérité:
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 vous utilisez jQuery, vous pouvez utiliser jQuery.each
pour parcourir un tableau; cela ressemblerait à ceci:
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
}
});
break
dans unefor
boucle,return false
dansjQuery.each
,return true
danssome
, ...).Utilisez plutôt la boucle for of qui fait partie de la version ES2015. Contrairement à forEach, nous pouvons utiliser return, break et continuer. Voir https://hacks.mozilla.org/2015/04/es6-in-depth-iterators-and-the-for-of-loop/
la source
La logique est incorrecte. Il renverrait toujours le résultat du dernier élément du tableau.
la source
Je sais que c'est un peu vieux, mais au lieu de parcourir le tableau avec une boucle for, il serait beaucoup plus facile d'utiliser la méthode
<array>.indexOf(<element>[, fromIndex])
Il parcourt un tableau, trouvant et renvoyant le premier index d'une valeur. Si la valeur n'est pas contenue dans le tableau, elle renvoie -1.
<array>
est le tableau à parcourir,<element>
est la valeur que vous recherchez et[fromIndex]
est l'index à partir duquel commencer (par défaut à 0).J'espère que cela vous aidera à réduire la taille de votre code!
la source
How to stop a JavaScript for loop?
Il ne réponse Y at - il une meilleure façon de retourner l'index d'un match / -1 si aucune .