The .indexOf()metode memiliki parameter opsional kedua yang menentukan indeks untuk memulai pencarian dari, sehingga Anda dapat menyebutnya dalam satu lingkaran untuk menemukan semua contoh nilai tertentu:
function getAllIndexes(arr, val) {
var indexes = [], i = -1;
while ((i = arr.indexOf(val, i+1)) != -1){
indexes.push(i);
}
return indexes;
}
var indexes = getAllIndexes(Cars, "Nano");
Anda tidak benar-benar memperjelas bagaimana Anda ingin menggunakan indeks, jadi fungsi saya mengembalikannya sebagai array (atau mengembalikan array kosong jika nilainya tidak ditemukan), tetapi Anda dapat melakukan sesuatu yang lain dengan nilai indeks individual di dalam lingkaran.
PEMBARUAN: Sesuai komentar VisioN, perulangan for yang sederhana akan menyelesaikan pekerjaan yang sama dengan lebih efisien, dan lebih mudah untuk dipahami dan karena itu lebih mudah untuk dipelihara:
function getAllIndexes(arr, val) {
var indexes = [], i;
for(i = 0; i < arr.length; i++)
if (arr[i] === val)
indexes.push(i);
return indexes;
}
forloop dengan array indeks yang terisi.