У .indexOf()метода есть необязательный второй параметр, который указывает индекс, с которого нужно начать поиск, поэтому вы можете вызвать его в цикле, чтобы найти все экземпляры определенного значения:
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");
Вы действительно не объясняете, как вы хотите использовать индексы, поэтому моя функция возвращает их как массив (или возвращает пустой массив, если значение не найдено), но вы можете сделать что-то еще с отдельными значениями индексов внутри петли.
ОБНОВЛЕНИЕ: согласно комментарию VisioN, простой цикл for позволит выполнить ту же работу более эффективно, и его легче понять и, следовательно, проще поддерживать:
function getAllIndexes(arr, val) {
var indexes = [], i;
for(i = 0; i < arr.length; i++)
if (arr[i] === val)
indexes.push(i);
return indexes;
}
forциклу с заполнением массива индексов.