--- title: Array.prototype.lastIndexOf() slug: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf tags: - Dokumentacja_JavaScript - Dokumentacje - JavaScript - Strony_wymagające_dopracowania - Wszystkie_kategorie translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf original_slug: Web/JavaScript/Referencje/Obiekty/Array/lastIndexOf ---
Zwraca ostatni indeks, pod którym podany element może być znaleziony w tablicy, lub -1 jeśli nie jest obecny. Tablica jest przeszukiwana od końca, zaczynając od indeksu fromIndex
arr.lastIndexOf(searchElement[, fromIndex = arr.length])
searchElementfromIndexlastIndexOf porównuje searchElement z elementami tablicy używając ścisłego porównania (podobnie jak w przypadku operatora ===).
lastIndexOf jest rozszerzeniem JavaScript dla standardu ECMA-262, więc może nie być obecny w innych implementacjach tego standardu. Można to obejść, dopisując poniższy kod na początku skryptu, zezwalający na użycie lastIndexOf w implementacji ECMA-262, które nie wspierają tego natywnie.
if (!Array.prototype.lastIndexOf)
{
Array.prototype.lastIndexOf = function(elt /*, from*/)
{
var len = this.length;
var from = Number(arguments[1]);
if (isNaN(from))
{
from = len - 1;
}
else
{
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
else if (from >= len)
from = len - 1;
}
for (; from > -1; from--)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
Należy zwrócić uwagę, że ta implementacja ma na celu całkowitą zgodność z lastIndexOf występującą w Firefoksie i silniku JavaScript SpiderMonkey, włączając w to przypadki skrajne. Jeśli masz zamiar wykorzystać przytoczone rozwiązanie w rzeczywistych aplikacjach, możesz obliczyć from za pomocą mniej skomplikowanego kodu (z pominięciem części instrukcji warunkowych).
lastIndexOfPoniższy przykład używa lastIndexOf do znalezienia określonych wartości w tablicy.
array = [2, 5, 9, 2]; index = array.lastIndexOf(2); // index is 3 index = array.lastIndexOf(7); // index is -1 index = array.lastIndexOf(2, 3); // index is 3 index = array.lastIndexOf(2, 2); // index is 0 index = array.lastIndexOf(2, -2); // index is 0 index = array.lastIndexOf(2, -1); // index is 3
Poniższy przykład używa lastIndexOf do znalezienia wszystkich wystąpień elementu w tablicy oraz dodaje ich indeksy do drugiej tablicy używając metody push.
indices = [];
idx = array.lastIndexOf(element)
while (idx != -1) {
indices.push(idx);
idx = (idx > 0 ? array.lastIndexOf(element, idx - 1) : -1);
}
Warto zauważyć, że obsłużyliśmy warunek idx == 0 oddzielnie, ponieważ element ten zostanie zawsze odnaleziony - bez względu na wartość parametru fromIndex - w przypadku gdy jest on pierwszym elementem tablicy. To różni tę metodę od metody {{jsxref("Array.prototype.indexOf()")}}.