JavaScript метод lastIndexOf()

JavaScript Array

Определение и применение

JavaScript метод lastIndexOf() позволяет возвратить последний индекс искомого элемента в массиве при первом совпадении, или -1 если элемент не найден. Для того, чтобы произвести поиск необходимого элемента с начала массива, Вы можете воспользоваться методом indexOf().


Обращаю Ваше внимание, что метод lastIndexOf() использует оператор строгого сравнения (===) при сравнении искомого элемента и элементов массива.


Поддержка браузерами

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
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, добавленном в ECMAScript 2016, он решает подобную задачу, но возвращает логическое значение:

var x = [NaN];  // инициализируем переменную, содержащую одно значение NaN

x.indexOf( NaN ); // возвращаемое значение -1 (элемент не найден)
x.includes( NaN ); // возвращаемое значение true (элемент найден)
JavaScript Array
×

Кажется, вы используете блокировщик рекламы :(

Этот ресурс не является коммерческим проектом и развивается на энтузиазме автора сайта, который посвящает все свое свободное время этому проекту.

Добавьте, пожалуйста, basicweb.ru в исключения блокировщика рекламы, этим вы поможете развитию проекта.