Array.lastIndexOf() в JavaScript — останній збіг
Опис
Метод 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' у нашому масиві.
Загальний опис
автор: NagarD
- Порада
-
При використанні методу
автор: BondlastIndexOf()важливо мати на увазі, що він шукає значення у масиві з кінця. Це означає, що метод поверне індекс останнього входження значення. Якщо вам потрібно знайти перше входження, розгляньте використання методуArray.prototype.indexOf(). - Порада
- автор: Bond
- Нотатка
-
Метод
автор: BondlastIndexOf()є універсальним. Він очікує, що значенняthisміститиме властивістьlengthі буде мати властивості з цілочисельними ключами. - Нотатка
-
Метод
lastIndexOf()також приймає необов'язковий аргумент, який вказує з якого індексу починати пошук у масиві. Це дозволяє вам обмежити область пошуку.За замовчуванням, пошук відбувається від кінця масиву (індекс
автор: Bond-1), але ви можете вказати інший індекс для початку пошуку, наприклад:myArray.lastIndexOf('apple', 3). У цьому прикладі пошук відбуватиметься від індексу3.
Синтаксис
lastIndexOf(searchElement)
lastIndexOf(searchElement, fromIndex)
Параметри
searchElement-
Елемент, який потрібно знайти у масиві.
автор: Bond fromIndex-
Індекс (перетворений у ціле число), з якого почати зворотній пошук, враховуючи індексацію з нуля.
- Від'ємний індекс відлічується назад від кінця масиву — якщо
fromIndex < 0, використовуєтьсяfromIndex + array.length. - Якщо
fromIndex < -array.length, пошук в масиві не проводиться, і повертається -1. - Якщо
fromIndex >= array.lengthабоfromIndexпропущено, використовуєтьсяarray.length - 1, що призводить до пошуку по всьому масиву.
- Від'ємний індекс відлічується назад від кінця масиву — якщо
Повернення
integer-
Останній індекс серед знайдених елементів у масиві;
автор: Bond-1, якщо елемент не знайдений.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 1 | 1.5 | 3 | 9.5 | 12 | 9 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 4 | 1 |
| Переглядач | ||
|---|---|---|
| 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
Цей приклад використовує метод lastIndexOf() для пошуку останнього входження заданого елемента в масиві animals. Результати пошуку виводяться у відповідні елементи span на сторінці. Очікувані результати цього прикладу: індекс останнього входження 'Dodo' - 3, індекс останнього входження 'Tiger' - 1.
HTML
<header>
<h2 class="title">lastIndexOf() Метод</h2>
<p class="description">Цей метод повертає індекс останнього входження заданого елемента в масиві. Якщо елемент не знайдено, повертається -1.</p>
</header>
<main>
<pre>['Dodo', 'Tiger', 'Penguin', 'Dodo']</pre>
<div>
<h3>Результати:</h3>
<p>Індекс останнього входження 'Dodo': <span id="result1"></span></p>
<p>Індекс останнього входження 'Tiger': <span id="result2"></span></p>
</div>
</main>
CSS
body {
font-size: 16px;
line-height: 1.5;
font-family: monospace;
}
pre {
color: #ff0000;
}
header {
background-color: #f1f1f1;
margin-bottom: 25px;
padding: 15px;
-webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
-moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}
header h2.title {
padding-bottom: 15px;
border-bottom: 1px solid #999;
}
header p.description {
font-style: italic;
color: #222;
}
main div {
padding: 15px;
background-color: #f9f9f9;
border: 1px solid #ddd;
border-radius: 5px;
}
main div h3 {
margin-top: 0;
}
main div p {
margin: 10px 0;
}
main div p span {
font-weight: bold;
}
JS
const animals = ['Dodo', 'Tiger', 'Penguin', 'Dodo'];
document.getElementById('result1').innerText = animals.lastIndexOf('Dodo');
document.getElementById('result2').innerText = animals.lastIndexOf('Tiger');
//# sourceURL=pen.js
Що насправді означає другий аргумент lastIndexOf() і чому перевірка if (…) на його результаті працює навпаки.
const log = ['open', 'save', 'open', 'close'];
console.log(log.lastIndexOf('open')); // 2 — останнє входження
console.log(log.indexOf('open')); // 0 — а це перше
console.log(log.lastIndexOf('quit')); // -1
// другий аргумент — ЗВІДКИ почати, рухаючись назад
console.log(log.lastIndexOf('open', 1)); // 0 — дивилися лише 1 і 0
console.log(log.lastIndexOf('close', 2)); // -1, хоча 'close' у масиві є
console.log(log.lastIndexOf('close', -1)); // 3 — від'ємний рахується з кінця
// строге порівняння: об'єкти за посиланням, NaN не знаходиться
console.log([{ id: 1 }].lastIndexOf({ id: 1 })); // -1
console.log([NaN].lastIndexOf(NaN), [NaN].includes(NaN)); // -1 true
// перевірка через if() працює навпаки
console.log(Boolean(log.lastIndexOf('quit')), log.lastIndexOf('quit') !== -1); // true false
Приклад використовує 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]
Коментарі
Коментарів ще немає — будьте першим!