Книга: JavaScript. Подробное руководство, 6-е издание
7.9.6. Методы indexOf() и lastlndexOf()
7.9.6. Методы indexOf() и lastlndexOf()
Методы indexOf()
и lastlndexOf()
отыскивают в массиве элемент с указанным значением и возвращают индекс первого найденного элемента или -1, если элемент с таким значением отсутствует. Метод indexOf()
выполняет поиск от начала массива к концу, а метод lastlndexOf()
- от конца к началу.
а = [0.1,2.1,0];
a. indexOf(1) // => 1: а[1] = 1
a.lastlndexOf(1) // => 3: а[3] = 1
a.index0f(3) // => -1: нет элемента со значением 3
В отличие от других методов, описанных в этом разделе, методы indexOf()
и lastlndexOf()
не принимают функцию в виде аргумента. В первом аргументе им передается искомое значение. Второй аргумент является необязательным: он определяет индекс массива, с которого следует начинать поиск. Если опустить этот аргумент, метод indexOf()
начнет поиск с начала массива, а метод lastlndexOf()
- с конца. Во втором аргументе допускается передавать отрицательные значения, которые интерпретируются как смещение относительно конца массива, как в методе splice()
: значение -1, например, соответствует последнему элементу массива.
Следующая функция отыскивает заданное значение в массиве и возвращает массив всех индексов, где было найдено совпадение. Здесь демонстрируется, как можно использовать второй аргумент метода indexOf()
для поиска совпадений после первого.
// Отыскивает все вхождения значения х в массив и возвращает
// массив индексов найденных совпадений
function findall(a. х) {
var results = [], // Возвращаемый массив индексов
len = a.length, // Длина массива, где выполняется поиск
pos = 0; // Начальная позиция поиска
while(pos < len) { // Пока остались непроверенные элементы...
pos = a.indexOf(x, pos); // Искать
if (pos === -1) break; // Если ничего не найдено, поиск завершен.
results.push(pos); // Иначе - сохранить индекс в массиве
pos = pos +1; //И продолжить поиск со следующего элемента
}
return results; // Вернуть массив индексов
}
Обратите внимание, что строки также имеют методы indexOf()
и lastlndexOf(),
которые действуют подобно методам массивов.