JavaScript метод indexOf()

JavaScript Array

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

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


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


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

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
indexOf()ДаДаДаДа9.0Да

JavaScript синтаксис:

array.indexOf( searchElement, fromIndex )

Версия JavaScript

ECMAScript 5.1 (реализовано в JavaScript 1.6)

Значения параметров

ПараметрОписание
searchElementЗначение, которое требуется найти внутри массива. Обязательное значение.
fromIndexЦелое число, определяющее индекс массива, с которого начинается поиск элемента массива. Необязательное значение, если не указано, то поиск осуществляется с 0 индекса.
Допускается использование отрицательных значений, в этом случае индекс с которого будет произведено сравнение элементов будет расчитан по следующей формуле: length (длина массива) + fromIndex.

Пример использования

var x = [1, 2, 3, "a", "b", "c"]; // инициализируем переменную, содержащую массив

x.indexOf( "a" ); // возвращаемое значение 3
x.indexOf( "d" ); // возвращаемое значение -1 (значение не найдено в массиве)
x.indexOf( "b", 3 ); // возвращаемое значение 4
x.indexOf( 2, 2 ); // возвращаемое значение -1 (значение не найдено в массиве)
x.indexOf( 1, -6 ); // возвращаемое значение 0
x.indexOf( 1, -5 ); // возвращаемое значение -1 (значение не найдено в массиве)

В следующем примере мы рассмотрим с Вами как продолжить поиск искомого элемента в массиве после первого и последующих совпадений, вплоть до конца массива. Это позволит нам сравнить все элементы массива по определенному индексу на предмет наличия искомого элемента:

var indexes = []; // инициализируем переменную, содержащую пустой массив
var myArray = ['z', 'v', 'z', 'v', 'z', 'v']; // инициализируем переменную, содержащую массив строковых значений по которому будет произведен поиск
var searchElement = 'z'; // инициализируем строковую переменную (значение переменной будем искать внутри массива myArray)
var index = myArray.indexOf( searchElement ); // инициализируем переменную, содержащую индекс первого искомого элемента (значение переменной searchElement) внутри массива myArray

while ( index != -1 ) { // пока значение переменной index не будет равно -1
  indexes.push( index ); // с использованием метода push() добавляем в переменную indexes значение переменной index
  index = myArray.indexOf( searchElement, index + 1 ); // изменяем значение переменной путем поиска необходимого элемента далее в массиве (если найден - индекс элемента, если нет то -1)
}

console.log( indexes ); // переменная содержит значение [0, 2, 4]

Обратите внимание на то, что если вы ищете внутри массива NaN (Not a number - не число), независимо от наличия возвращаемое значение будет -1. Это поведение метода учтено в методе includes()ECMAScript 2016, добавленном в ECMAScript 2016, он решает подобную задачу, но возвращает логическое значение:

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

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