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' у нашому масиві.
| Порада: | При використанні методу |
| Порада: | Якщо значення не знайдено в масиві, метод Наприклад: `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` |
| Нотатка: | Метод За замовчуванням, пошук відбувається від кінця масиву (індекс |
| Нотатка: | Метод |
Синтаксис
lastIndexOf(searchElement)
lastIndexOf(searchElement, fromIndex)
Параметри
- *
searchElement Елемент, який потрібно знайти у масиві.
fromIndexІндекс (перетворений у ціле число), з якого почати зворотній пошук, враховуючи індексацію з нуля.
- Від'ємний індекс відлічується назад від кінця масиву — якщо
fromIndex < 0, використовуєтьсяfromIndex + array.length. - Якщо
fromIndex < -array.length, пошук в масиві не проводиться, і повертається -1. - Якщо
fromIndex >= array.lengthабоfromIndexпропущено, використовуєтьсяarray.length - 1, що призводить до пошуку по всьому масиву.
- Від'ємний індекс відлічується назад від кінця масиву — якщо
Return
integerОстанній індекс серед знайдених елементів у масиві;
-1, якщо елемент не знайдений.
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
1 |
1.5 |
3 |
9.5 |
12 |
| Переглядач | ||||
|---|---|---|---|---|
37 |
18 |
4 |
1 |
| Переглядач | ||
|---|---|---|
0.10.0 |
1.0 |
Приклади
Цей приклад використовує метод lastIndexOf() для пошуку останнього входження заданого елемента в масиві animals. Результати пошуку виводяться у відповідні елементи span на сторінці. Очікувані результати цього прикладу: індекс останнього входження 'Dodo' - 3, індекс останнього входження 'Tiger' - 1.
Приклад використовує 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
Приклад використовує 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]
Метод 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
