JavaScript-методы indexOf и lastIndexOf: находим элемент в массиве

В статье рассказывается о том, как использовать способы JavaScript indexOf и lastIndexOf для определения расположения элемента внутри массива.

Знакомство с способом indexOf

Чтобы определить расположение элемента в массиве, можно воспользоваться способом indexOf(). Он возвращает индекс первого вхождения элемента, либо -1, если он не найден.

Ниже приведен синтаксис способа indexOf():

Array.indexOf(searchElement, fromIndex)

Способ indexOf() принимает два аргумента. searchElement -это элемент, который необходимо найти в массиве. fromIndex – это индекс массива, с которого необходимо начать поиск.

Аргумент fromIndex в виде значения может принимать как положительное, так и отрицательное целое число. Если значение аргумента fromIndex будет отрицательным, способ indexOf() начнет поиск по всему массиву плюс значение fromIndex. Если опустить аргумент fromIndex, то способ начнет поиск с элемента 0.

Учтите, что способ JavaScript array indexOf() при сравнении searchElement с элементами в массиве, использует алгоритм строгого равенства, схожий с оператором “тройное равно” (===).

Примеры применения способа indexOf()

Предположим, что есть массив scores, в котором содержится шесть чисел:

var scores = [10, 20, 30, 10, 40, 20];

В следующем примере способ indexOf() используется для поиска элементов в массиве scores:

console.log(scores.indexOf(10)); // 0console.log(scores.indexOf(30)); // 2console.log(scores.indexOf(50)); // -1console.log(scores.indexOf(20)); // 1

JavaScript-методы indexOf и lastIndexOf: находим элемент в массиве В примере используется fromIndex с отрицательными значениями:

console.log(scores.indexOf(20,-1)); // 5(fromIndex = 6+(-1) = 5)console.log(scores.indexOf(20,-5)); // 1(fromIndex = 6+(-5) = 1)

Предположим, что есть массив объектов. У каждого из них два свойства: name и age:

var guests = [ {name: 'John Doe', age: 30}, {name: 'Lily Bush', age: 20}, {name: 'William Gate', age: 25}];

Следующие выражение возвращает -1, даже если у первого элемента массива guests и searchElement будут одинаковые значения свойств name и age. Поскольку это два различных объекта:

console.log(guests.indexOf({ name: 'John Doe', age: 30})); // -1

Иногда необходимо находить индексы всех упоминаний элемента в массиве. В приведенном ниже примере для этого в возможности find() используется способ массива JavaScript indexOf():

function find(needle, haystack) { var results = []; var idx = haystack.indexOf(needle); while(idx!= -1) {      results.push(idx);        idx = haystack.indexOf(needle, idx + 1);    }    return results;}

В следующем примере функцию find() используется для возврата массива с позициями числа 10 в массиве scores:

console.log(find(10,scores)); // [0, 3]JavaScript array lastIndexOf method

Знакомство с способом lastIndexOf()

У массивов есть ещё один способ — lastIndexOf(), который предоставляет почти тот же функционал, что и indexOf().

Синтаксис способа lastIndexOf():

Array.lastIndexOf(searchElement[, fromIndex = Array.length – 1])

Способ возвращает индекс последнего вхождения searchElement в массиве. Если элемент не найден, будет возвращено значение -1.

В отличие от способа JavaScript indexOf(), lastIndexOf() сканирует массив в обратном направлении, начиная от значения fromIndex.

Представленное ниже выражение возвращает последние индексы чисел 10 и 20 в массиве scores:

console.log(scores.lastIndexOf(10));// 3console.log(scores.lastIndexOf(20));// 5

Примеры использования способа lastIndexOf()

Поскольку число 50 не находится в массиве, следующее выражение вернет -1.

console.log(scores.lastIndexOf(50));// -1

Мы научились использовать способы JavaScript indexOf() string и lastIndexOf() для поиска элементов в массиве.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *