Spec-Zone.ru › JavaScript

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

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-array.prototype.lastindexof

Совместимость с браузерами

Настольные Мобильные Серверные
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
  • Руководство по индексированным коллекциям
  • Array
  • Array.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API