Untuk menghentikan forloop di awal JavaScript, Anda menggunakan 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
}
}
Jika Anda berada di lingkungan ES2015 (alias ES6), untuk kasus penggunaan khusus ini, Anda dapat menggunakan Array#findIndex(untuk menemukan indeks entri) atau Array#find(untuk menemukan entri itu sendiri), keduanya dapat di-shim / 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#findIndexberhenti pertama kali callback mengembalikan nilai yang sebenarnya, mengembalikan indeks untuk panggilan itu ke callback; itu kembali -1jika callback tidak pernah mengembalikan nilai yang sebenarnya. Array#findjuga berhenti ketika menemukan apa yang Anda cari, tetapi mengembalikan entri, bukan indeksnya (atau undefinedjika callback tidak pernah mengembalikan nilai yang sebenarnya).
Jika Anda menggunakan lingkungan yang kompatibel dengan ES5 (atau shim ES5), Anda dapat menggunakan somefungsi baru pada array, yang memanggil callback hingga callback mengembalikan nilai yang sebenarnya:
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`
}
});
Jika Anda menggunakan jQuery, Anda dapat menggunakan jQuery.eachuntuk melakukan loop melalui array; itu akan terlihat seperti ini:
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
}
});