JS метод Array.lastIndexOf()


Опис

Метод lastIndexOf() здійснює пошук елемента (параметр searchElement) у масиві, використовуючи алгоритм строгої рівності, той самий, що й у оператора ===. Однак варто пам'ятати про особливості:

  • NaN завжди розглядається як нерівний будь-якому іншому значенню, тому lastIndexOf() поверне -1, якщо searchElement є NaN.
  • Метод lastIndexOf() починає пошук з кінця масиву і рухається до його початку, що допомагає виявити останнє входження елемента.
  • У випадку розріджених масивів (з пустими значеннями), lastIndexOf() ігнорує порожні ячейки.

Така поведінка методу особливо корисна при роботі з великими масивами даних або в ситуаціях, коли важливо точно визначити позицію останнього входження елемента.

Розглянемо наступний код:

let animals = ['cat', 'dog', 'elephant', 'dog', 'bird'];
let lastIndex = animals.lastIndexOf('dog');

console.log(lastIndex); // 3

У цьому прикладі ми маємо масив animals, який містить декілька різних тварин. Ми використовуємо метод lastIndexOf() для пошуку останнього входження слова 'dog'. У результаті ми отримуємо індекс 3, що відповідає другому входженню 'dog' у нашому масиві.

автор: Bond

Порада

При використанні методу lastIndexOf() важливо мати на увазі, що він шукає значення у масиві з кінця. Це означає, що метод поверне індекс останнього входження значення. Якщо вам потрібно знайти перше входження, розгляньте використання методу Array.prototype.indexOf().

автор: Bond
Порада

Якщо значення не знайдено в масиві, метод lastIndexOf() поверне -1. Тому, при перевірці результату, будьте уважні і впевніться, що врахуєте цю можливість.

Наприклад:

`const myArray = [1, 2, 3, 2, 1]; console.log(myArray.lastIndexOf(2)); // виведе: 3

console.log(myArray.lastIndexOf(2, 2)); // виведе: 1

console.log(myArray.lastIndexOf(4)); // виведе: -1`

автор: Bond
Нотатка

Метод lastIndexOf() є універсальним. Він очікує, що значення this міститиме властивість length і буде мати властивості з цілочисельними ключами.

автор: Bond
Нотатка

Метод lastIndexOf() також приймає необов'язковий аргумент, який вказує з якого індексу починати пошук у масиві. Це дозволяє вам обмежити область пошуку.

За замовчуванням, пошук відбувається від кінця масиву (індекс -1), але ви можете вказати інший індекс для початку пошуку, наприклад: myArray.lastIndexOf('apple', 3). У цьому прикладі пошук відбуватиметься від індексу 3.

автор: Bond

Синтаксис

lastIndexOf(searchElement)
lastIndexOf(searchElement, fromIndex)

Параметри

searchElement

Елемент, який потрібно знайти у масиві.

автор: Bond

fromIndex

Індекс (перетворений у ціле число), з якого почати зворотній пошук, враховуючи індексацію з нуля.

  • Від'ємний індекс відлічується назад від кінця масиву — якщо fromIndex < 0, використовується fromIndex + array.length.
  • Якщо fromIndex < -array.length, пошук в масиві не проводиться, і повертається -1.
  • Якщо fromIndex >= array.length або fromIndex пропущено, використовується array.length - 1, що призводить до пошуку по всьому масиву.
автор: Bond

Повернення

integer

Останній індекс серед знайдених елементів у масиві; -1, якщо елемент не знайдений.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 1.5 3 9.5 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
37 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

Метод lastIndexOf() спочатку зчитує властивість length даного об'єкта, а потім отримує доступ до кожної властивості з ключем, який є не від'ємним цілим числом меншим за значення length.

const arrayLike = {
  length: 3,
  0: 2,
  1: 3,
  2: 2,
  3: 5, // проігноровано методом lastIndexOf(), оскільки length дорівнює 3
};

console.log(Array.prototype.lastIndexOf.call(arrayLike, 2));
// 2

console.log(Array.prototype.lastIndexOf.call(arrayLike, 5));
// -1
автор: Bond

Цей приклад використовує метод lastIndexOf() для пошуку останнього входження заданого елемента в масиві animals. Результати пошуку виводяться у відповідні елементи span на сторінці. Очікувані результати цього прикладу: індекс останнього входження 'Dodo' - 3, індекс останнього входження 'Tiger' - 1.

автор: Bond

Приклад використовує lastIndexOf() для знаходження значень в масиві.

const numbers = [2, 5, 9, 2];
numbers.lastIndexOf(2); // 3
numbers.lastIndexOf(7); // -1
numbers.lastIndexOf(2, 3); // 3
numbers.lastIndexOf(2, 2); // 0
numbers.lastIndexOf(2, -2); // 0
numbers.lastIndexOf(2, -1); // 3
автор: Bond

Приклад використовує lastIndexOf для знаходження всіх індексів входження елемента в заданому масиві, використовуючи push для додавання їх до іншого масиву при їх знаходженні.

const indices = [];
const array = ["a", "b", "a", "c", "a", "d"];
const element = "a";
let idx = array.lastIndexOf(element);
while (idx !== -1) {
  indices.push(idx);
  idx = idx > 0 ? array.lastIndexOf(element, idx - 1) : -1;
}

console.log(indices);
// [4, 2, 0]
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід