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

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

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