JavaScript метод lastIndexOf()
JavaScript ArrayОпределение и применение
JavaScript метод lastIndexOf() позволяет возвратить последний индекс искомого элемента в массиве при первом совпадении, или -1 если элемент не найден. Для того, чтобы произвести поиск необходимого элемента с начала массива, Вы можете воспользоваться методом indexOf().
Обращаю Ваше внимание, что метод lastIndexOf() использует оператор строгого сравнения (===) при сравнении искомого элемента и элементов массива.
Поддержка браузерами
Метод | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
lastIndexOf() | Да | Да | Да | Да | 9.0 | Да |
JavaScript синтаксис:
array.lastIndexOf( searchElement, fromIndex )
Версия JavaScript
ECMAScript 5.1 (реализовано в JavaScript 1.6)Значения параметров
Параметр | Описание |
---|---|
searchElement | Значение, которое требуется найти внутри массива. Обязательное значение. |
fromIndex | Целое число, определяющее индекс массива, с которого начинается поиск элемента массива (поиск осуществляется в порядке убывания индекса). Необязательное значение, если не указано, то поиск осуществляется с последнего индекса в массиве. Допускается использование отрицательных значений, в этом случае индекс с которого будет произведено сравнение элементов будет расчитан по следующей формуле: length (длина массива) + fromIndex. Если рассчитанный индекс окажется меньше 0, массив не просматривается. |
Пример использования
var x = [1, 2, 3, "a", "b", "c"]; // инициализируем переменную, содержащую массив x.lastIndexOf( "a" ); // возвращаемое значение 3 x.lastIndexOf( "d" ); // возвращаемое значение -1 (значение не найдено в массиве) x.lastIndexOf( "b", 4 ); // возвращаемое значение 4 x.lastIndexOf( "b", 2 ); // возвращаемое значение -1 (значение не найдено в массиве) x.lastIndexOf( 1, -6 ); // возвращаемое значение 0 x.lastIndexOf( 1, -5 ); // возвращаемое значение 0
В следующем примере мы рассмотрим с Вами как продолжить поиск искомого элемента с конца массива после первого и последующих совпадений, вплоть до начала массива. Это позволит нам сравнить все элементы массива по определенному индексу на предмет наличия искомого элемента:
var indexes = []; // инициализируем переменную, содержащую пустой массив var myArray = ['z', 'v', 'z', 'v', 'z', 'v']; // инициализируем переменную, содержащую массив строковых значений по которому будет произведен поиск var searchElement = 'z'; // инициализируем строковую переменную (значение переменной будем искать внутри массива myArray) var index = myArray.lastIndexOf( searchElement ); // инициализируем переменную, содержащую индекс первого искомого элемента (значение переменной searchElement) внутри массива myArray while ( index != -1 ) { // пока значение переменной index не равно -1 indexes.push( index ); // с использованием метода push() добавляем в переменную indexes значение переменной index if ( index > 0 ) { // // если индекс больше нуля (иначе попадем в вечный цикл) index = myArray.lastIndexOf( searchElement, index - 1 ); // изменяем значение переменной путем поиска необходимого элемента далее в массиве (если найден - индекс элемента, если нет то -1) } else index = -1; // если индекс равен нулю, то индекс будет равен -1 } console.log( indexes ); // переменная содержит значение [4, 2, 0]
Обратите внимание на то, что если вы ищете внутри массива NaN (Not a number - не число), независимо от наличия возвращаемое значение будет -1. Это поведение метода учтено в методе includes(), добавленном в ECMAScript 2016, он решает подобную задачу, но возвращает логическое значение:
var x = [NaN]; // инициализируем переменную, содержащую одно значение NaN x.indexOf( NaN ); // возвращаемое значение -1 (элемент не найден) x.includes( NaN ); // возвращаемое значение true (элемент найден)JavaScript Array