JavaScript | Как получить индекс элемента в массиве?

Для примера возьмём массив из строк, чтобы сравнивать буквы, а не числа. Так легче понять. Всего 10 элементов в массиве.

var massiv = ["qw","qe","qr","as","ad","af","zx","zc","zv","qaz"]
Десять строк в массиве - JavaScript
Десять строк в массиве — JavaScript

Как узнать под каким индексом находится элемент в массиве?

В этом нам поможет метод прототипов объекта Array — findIndex(). Он проверяет элементы массива по какому-то определённому условию. Если «условие выполняется«(true) и элемент находится в массиве, тогда возвращается его индекс (целое положительное число или 0). Если «условие НЕ выполняется«(false) и элемент не найден в массиве, тогда возвращается «-1».

Важно отметить, что если в массиве будет несколько одинаковых значений у разных элементов, то метод findIndex() достанет только самый первый из них.

И ещё, метод findIndex() создаёт новый массив и не изменяет тот, на котором вызывается. Это важно для сохранности данных.

 

Решаем вопрос

Пробуем получить индекс элемента, у которого значение «zx»

massiv.findIndex(i => i == "zx")
6 // результат - номер индекса
massiv.findIndex(i => i == "as")
3 // результат - номер индекса
massiv.findIndex(i => i == "qw")
0 // результат - номер индекса

Для каждого элемента i мы проверили условие, что i равняется строковому значению. Когда метод находил совпадения, тогда он возвращал номер индекса, существующего элемента.

Метод findIndex вернул индексы - JavaScript
Метод findIndex вернул индексы — JavaScript

 

Пробуем получить индекс элемента, которого нет в массиве

massiv.findIndex(i => i == "ty")
-1 // индекса нет
massiv.findIndex(i => i == "gh")
-1 // индекса нет
massiv.findIndex(i => i == "bn")
-1 // индекса нет
Метод findIndex не нашёл элементы по значению - JavaScript
Метод findIndex не нашёл элементы по значению — JavaScript

Если в массиве несколько одинаковых значений?

Добавим несколько одинаковых элементов в массив:

massiv[10] = "as"
massiv[11] = "as"
12 строк в массиве - JavaScript
12 строк в массиве — JavaScript

Теперь, если мы попробуем получить индекс элемента, который содержит «as», то мы получим только индекс 3. Индексы 10 и 11 мы не увидим.

Только индекс первого совпадения - JavaScript
Только индекс первого совпадения — JavaScript

Читай публикацию JavaScript | Как получить индексы элементов с одинаковыми значениями в массиве?, чтобы понять как решить эту задачу.

 

Информационные ссылки

JavaScript | Массивы (Array)

findIndex() — метод прототипов объекта Array

Стандарт ECMAScript — Living Standard — https://tc39.es/ecma262/#sec-array.prototype.findindex

Поделись записью