Untuk menghentikan for
loop 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#findIndex
berhenti pertama kali callback mengembalikan nilai yang sebenarnya, mengembalikan indeks untuk panggilan itu ke callback; itu kembali -1
jika callback tidak pernah mengembalikan nilai yang sebenarnya. Array#find
juga berhenti ketika menemukan apa yang Anda cari, tetapi mengembalikan entri, bukan indeksnya (atau undefined
jika callback tidak pernah mengembalikan nilai yang sebenarnya).
Jika Anda menggunakan lingkungan yang kompatibel dengan ES5 (atau shim ES5), Anda dapat menggunakan some
fungsi 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.each
untuk 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
}
});