У .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, простий цикл дозволить зробити ту саму роботу ефективніше, і її легше зрозуміти і, отже, легше підтримувати:
function getAllIndexes(arr, val) {
var indexes = [], i;
for(i = 0; i < arr.length; i++)
if (arr[i] === val)
indexes.push(i);
return indexes;
}
for
циклу з заповненням масиву індексів.