JavaScriptTablice

Array.prototype.findLastIndex()

Zwraca indeks ostatniego elementu spełniającego warunek, szukając od końca, albo -1.

Zwraca
Indeks ostatniego pasującego elementu albo -1.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
const lessons = [
  { title: 'Zmienne', done: true },
  { title: 'Pętle', done: true },
  { title: 'Funkcje', done: false },
  { title: 'Tablice', done: false }
]

console.log(lessons.findLastIndex((lesson) => lesson.done))
console.log(lessons.findIndex((lesson) => !lesson.done))
console.log(lessons.findLastIndex((lesson) => lesson.title === 'Klasy'))
Konsola
1
2
-1

Definicja i zastosowanie

#

Metoda findLastIndex() sprawdza elementy funkcją testującą, zaczynając od końca tablicy. Zwraca indeks pierwszego trafienia, czyli ostatniego pasującego elementu w kolejności tablicy. Gdy żaden element nie spełnia warunku, wynikiem jest -1.

To odpowiednik findIndex() do szukania od tyłu. Przydaje się przy danych ułożonych chronologicznie, gdy interesuje Cię najnowszy wpis: ostatnia ukończona lekcja, ostatnia nieudana próba logowania albo ostatnia wiadomość od mentora.

Indeks pozwala nie tylko odczytać element, ale też go podmienić, usunąć przez splice() albo wyciąć fragment tablicy przez slice(). Jeśli potrzebujesz tylko samego elementu, prostsze jest findLast().

Składnia

#
Składnia
array.findLastIndex(callbackFn)
array.findLastIndex(callbackFn, thisArg)

Parametry

#
  • callbackFn

    function (element, index, array)

    Funkcja testująca wywoływana od ostatniego elementu w stronę pierwszego.
  • thisArg

    opcjonalny

    Wartość this wewnątrz funkcji.

Więcej przykładów

#
Wszystko po ostatnim błędzie
JavaScript
const log = ['ok', 'błąd', 'ok', 'błąd', 'ok', 'ok']
const lastError = log.findLastIndex((entry) => entry === 'błąd')

console.log(lastError)
console.log(log.slice(lastError + 1))
Konsola
3
['ok', 'ok']

Gdy w logu nie ma żadnego błędu, findLastIndex() zwróci -1, a slice(0) całą tablicę. Tutaj to akurat pożądany wynik.

Oznaczenie najnowszej słabej próby
JavaScript
const attempts = [
  { id: 1, score: 40 },
  { id: 2, score: 85 },
  { id: 3, score: 55 }
]

const index = attempts.findLastIndex((attempt) => attempt.score < 60)
if (index !== -1) {
  attempts[index] = { ...attempts[index], retry: true }
}

console.log(index)
console.log(attempts[index])
Konsola
2
{ id: 3, score: 55, retry: true }

Obsługa przeglądarek

#

Szeroko dostępne · od 2022 roku

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

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Sprawdzaj wynik -1, zanim użyjesz indeksu. Przypisanie do array[-1] nie zmieni żadnego elementu, tylko doda do tablicy dziwną właściwość o nazwie „-1”.
  • Do prostych wartości wystarczy lastIndexOf(). findLastIndex() jest potrzebne, gdy szukasz według warunku, np. pola obiektu.

Powiązane hasła

#

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