JavaScriptTablice

Array.prototype.lastIndexOf()

Zwraca indeks ostatniego wystąpienia wartości w tablicy albo -1, gdy jej nie ma.

Zwraca
Indeks ostatniego wystąpienia albo -1.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
const answers = ['A', 'C', 'B', 'C', 'D']

console.log(answers.lastIndexOf('C'))
console.log(answers.indexOf('C'))
console.log(answers.lastIndexOf('E'))
Konsola
3
1
-1

Definicja i zastosowanie

#

Metoda lastIndexOf() przeszukuje tablicę od końca i zwraca indeks ostatniego elementu równego podanej wartości. Gdy takiej wartości nie ma, wynikiem jest -1. Indeks zawsze liczy się od początku tablicy, choć samo szukanie idzie od tyłu.

Porównuje ściśle, jak operator ===: liczba 3 i napis "3" to dla niej różne wartości, a NaN nigdy nie zostanie znalezione. Obiekty porównywane są przez referencję, więc do szukania obiektu po jego polu użyj findLastIndex().

Drugi argument wskazuje indeks, od którego szukanie rusza w stronę początku. Dzięki temu znajdziesz przedostatnie wystąpienie albo ograniczysz szukanie do początkowej części tablicy.

Składnia

#
Składnia
array.lastIndexOf(searchElement)
array.lastIndexOf(searchElement, fromIndex)

Parametry

#
  • searchElement

    dowolna wartość

    Szukana wartość.
  • fromIndex

    opcjonalny

    Indeks, od którego zaczyna się szukanie w stronę początku. Domyślnie ostatni element. Wartość ujemna liczy od końca.

Więcej przykładów

#
Szukanie przed ostatnim wystąpieniem
JavaScript
const logins = ['ania', 'kuba', 'ania', 'ola', 'ania']

const last = logins.lastIndexOf('ania')
const previous = logins.lastIndexOf('ania', last - 1)

console.log(last, previous)
Konsola
4 2
Sprawdzanie duplikatów
JavaScript
const tags = ['html', 'css', 'js', 'css']
const isUnique = (tag) => tags.indexOf(tag) === tags.lastIndexOf(tag)

console.log(isUnique('html'))
console.log(isUnique('css'))
Konsola
true
false
Pułapka: NaN
JavaScript
const values = [1, NaN, 3]

console.log(values.lastIndexOf(NaN))
console.log(values.findLastIndex(Number.isNaN))
Konsola
-1
1

lastIndexOf() porównuje przez ===, a NaN nie jest równe nawet samemu sobie. Z funkcją Number.isNaN poradzi sobie findLastIndex().

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Porównuj wynik jawnie z -1. Indeks 0 też jest poprawnym trafieniem, a w warunku if zachowuje się jak fałsz.
  • Porównanie indexOf(x) === lastIndexOf(x) pokazuje, czy wartość nie ma duplikatów. Pamiętaj, że dla wartości, której w ogóle nie ma, oba wyniki to -1.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.