Um eine for
Schleife in JavaScript frühzeitig zu stoppen , verwenden Sie 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
}
}
Wenn Sie sich in einer ES2015-Umgebung (auch bekannt als ES6) befinden, können Sie für diesen speziellen Anwendungsfall Array#findIndex
(um den Index des Eintrags zu finden) oder Array#find
(um den Eintrag selbst zu finden) Folgendes verwenden: Beide können shimmed / polyfilled sein:
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
stoppt das erste Mal, wenn der Rückruf einen wahrheitsgemäßen Wert zurückgibt, und gibt den Index für diesen Aufruf an den Rückruf zurück; Es wird zurückgegeben, -1
wenn der Rückruf niemals einen wahrheitsgemäßen Wert zurückgibt. Array#find
stoppt auch, wenn es findet, wonach Sie suchen, aber es gibt den Eintrag zurück, nicht seinen Index (oder undefined
wenn der Rückruf niemals einen wahrheitsgemäßen Wert zurückgibt).
Wenn Sie eine ES5-kompatible Umgebung (oder einen ES5-Shim) verwenden, können Sie die neue some
Funktion für Arrays verwenden, die einen Rückruf aufruft, bis der Rückruf einen wahrheitsgemäßen Wert zurückgibt:
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`
}
});
Wenn Sie jQuery verwenden, können Sie jQuery.each
ein Array durchlaufen. das würde so aussehen:
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
in einerfor
Schleife,return false
injQuery.each
,return true
insome
, ...).Verwenden Sie stattdessen die for-Schleife, die Teil der ES2015-Version ist. Im Gegensatz zu forEach können wir return, break und continue verwenden. Siehe https://hacks.mozilla.org/2015/04/es6-in-depth-iterators-and-the-for-of-loop/
quelle
Die Logik ist falsch. Es würde immer das Ergebnis des letzten Elements im Array zurückgeben.
quelle
Ich weiß, dass dies ein bisschen alt ist, aber anstatt das Array mit einer for-Schleife zu durchlaufen, wäre es viel einfacher, die Methode zu verwenden
<array>.indexOf(<element>[, fromIndex])
Es durchläuft ein Array und findet den ersten Index eines Werts. Wenn der Wert nicht im Array enthalten ist, wird -1 zurückgegeben.
<array>
ist das zu durchsuchende Array, der gesuchte<element>
Wert und[fromIndex]
der Index, von dem aus begonnen werden soll (standardmäßig 0).Ich hoffe, dies hilft, die Größe Ihres Codes zu reduzieren!
quelle
How to stop a JavaScript for loop?
Es tut Antwort Gibt es einen besseren Weg , um den Index eines Spiels / -1 , wenn keine zurückzukehren .