Array.prototype.lastIndexOf()
Базовый уровень Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Метод lastIndexOf() экземпляров Array возвращает последний индекс, по которому данный элемент может быть найден в массиве, или -1, если он отсутствует. Поиск в массиве осуществляется в обратном порядке, начиная с fromIndex.
Попробовать
const animals = ["Dodo", "Tiger", "Penguin", "Dodo"];
console.log(animals.lastIndexOf("Dodo"));
// Expected output: 3
console.log(animals.lastIndexOf("Tiger"));
// Expected output: 1
Синтаксис
lastIndexOf(searchElement) lastIndexOf(searchElement, fromIndex)
Параметры
-
searchElement - Элемент для поиска в массиве.
-
fromIndexНеобязательный - Индекс, начинающийся с нуля, с которого следует начать обратный поиск, преобразованный в целое число.
- Отрицательный индекс отсчитывается с конца массива — если
-array.length <= fromIndex < 0, используетсяfromIndex + array.length. - Если
fromIndex < -array.length, поиск в массиве не выполняется и возвращается-1. Концептуально это можно представить как начало с несуществующей позиции перед началом массива и обратное движение оттуда. На этом пути нет элементов массива, поэтомуsearchElementникогда не будет найден. - Если
fromIndex >= array.lengthилиfromIndexопущен, илиundefined, используетсяarray.length - 1, что приводит к поиску по всему массиву. Концептуально это можно представить как начало с несуществующей позиции за концом массива и обратное движение оттуда. В конечном итоге оно достигает реальной конечной позиции массива, после чего начинается обратный поиск по фактическим элементам массива.
- Отрицательный индекс отсчитывается с конца массива — если
Возвращаемое значение
Последний индекс searchElement в массиве; -1, если не найден.
Описание
Метод lastIndexOf() сравнивает searchElement с элементами массива, используя строгое равенство (тот же алгоритм, который используется оператором ===). Значения NaN никогда не считаются равными, поэтому lastIndexOf() всегда возвращает -1, когда searchElement является NaN.
Метод lastIndexOf() пропускает пустые слоты в разреженных массивах.
Метод lastIndexOf() является обобщённым (generic). Он ожидает, что значение this будет иметь свойство length и свойства с целочисленными ключами.
Примеры
Использование lastIndexOf()
Следующий пример использует 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() для поиска NaN.
const array = [NaN]; array.lastIndexOf(NaN); // -1
Поиск всех вхождений элемента
Следующий пример использует 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]
Обратите внимание, что мы должны обрабатывать случай idx === 0 отдельно, поскольку элемент всегда будет найден независимо от параметра fromIndex, если это первый элемент массива. Это отличается от метода indexOf().
Использование lastIndexOf() в разреженных массивах
Вы не можете использовать lastIndexOf() для поиска пустых слотов в разреженных массивах.
console.log([1, , 3].lastIndexOf(undefined)); // -1
Вызов lastIndexOf() для объектов, не являющихся массивами
Метод lastIndexOf() считывает свойство length объекта this, а затем обращается к каждому свойству, ключ которого является неотрицательным целым числом, меньшим, чем length.
const arrayLike = {
length: 3,
0: 2,
1: 3,
2: 2,
3: 5, // ignored by lastIndexOf() since length is 3
};
console.log(Array.prototype.lastIndexOf.call(arrayLike, 2));
// 2
console.log(Array.prototype.lastIndexOf.call(arrayLike, 5));
// -1
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
lastIndexOf |
1 |
12 |
1.5 |
9.5 |
3 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
1.0.0 |
1.0 |
0.10.0 |
Смотрите также
- Полифил
Array.prototype.lastIndexOfвcore-js - Полифил es-shims
Array.prototype.lastIndexOf - Руководство по индексированным коллекциям
ArrayArray.prototype.findIndex()Array.prototype.findLastIndex()Array.prototype.indexOf()TypedArray.prototype.lastIndexOf()String.prototype.lastIndexOf()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf