--- title: Array.prototype.lastIndexOf() slug: Web/JavaScript/Referencia/Objectes_globals/Array/lastIndexOf translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf ---
El mètode lastIndexOf
()
retorna l'última posició a la qual es troba l'element proporcionat, o bé -1 si l'element no es troba dins l'array. L'array es recorrerà en ordre invers a partir de la posició pocicioInicial.
arr.lastIndexOf(elementAcercar[, posicioInicial = arr.length - 1])
elementAcercar
posicioInicial
posicioInicial
sigui negatiu. Si la posició calculada és menor que zero, es retornarà -1, és a dir, l'array no serà cercat.lastIndexOf
compara elementAcercar amb els elements de l'array mitjançant la igualtat estricta (el mateix mètode utilitzat per l'operador ===
, també anomenat triple-equals).
lastIndexOf
L'exemple següent utilitza lastIndexOf
per a localitzar valors dins un array.
var array = [2, 5, 9, 2]; array.lastIndexOf(2); // 3 array.lastIndexOf(7); // -1 array.lastIndexOf(2, 3); // 3 array.lastIndexOf(2, 2); // 0 array.lastIndexOf(2, -2); // 0 array.lastIndexOf(2, -1); // 3
L'exemple segïuent utilitza lastIndexOf
per a trobar totes les posicions d'un element en un array donat, utilitzant {{jsxref("Array.prototype.push", "push")}} per a afegir-los a u altre array un cop trobats.
var indices = []; var array = ['a', 'b', 'a', 'c', 'a', 'd']; var element = 'a'; var 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]
Cal destacar que el cas idx == 0
s'ha de tractar de forma separada ja que l'element sempre serà trobat sense importar el valor del paràmetre posicioInicial
si és el primer element de l'array. Aquest comportament és diferent del del mètode {{jsxref("Array.prototype.indexOf", "indexOf")}}.
lastIndexOf
va ser afegit al standard ECMA-262 a la cinquena versió; degut a això pot no estar present en tots els navegadors. Afegir el següent codi al principi dels vostres escripts us permetrà utilitzar aquesta funció en navegadors on indexOf
no sigui suportada de forma nativa. Aquest algoritme és el mateix que l'especificat a la cinquena versió de l'ECMA-262, donat que {{jsxref("Object")}}, {{jsxref("TypeError")}}, {{jsxref("Number")}}, {{jsxref("Math.floor")}}, {{jsxref("Math.abs")}}, i{{jsxref("Math.min")}} no han estat modificats.
// Production steps of ECMA-262, Edition 5, 15.4.4.15 // Reference: http://es5.github.io/#x15.4.4.15 if (!Array.prototype.lastIndexOf) { Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) { 'use strict'; if (this === void 0 || this === null) { throw new TypeError(); } var n, k, t = Object(this), len = t.length >>> 0; if (len === 0) { return -1; } n = len - 1; if (arguments.length > 1) { n = Number(arguments[1]); if (n != n) { n = 0; } else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) { n = (n > 0 || -1) * Math.floor(Math.abs(n)); } } for (k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k >= 0; k--) { if (k in t && t[k] === searchElement) { return k; } } return -1; }; }
Cal destacar que l'implementació aspira una compatibilitat ambsoluta amb els mètodes lastIndexOf
trobats al Firefox i el motor JavaScript SpiderMonkey, incloent diversos casos que són excepcionals. Si es pretén utilitzar-lo en aplicacions quotidianes, és posible calcular from
amb codi més senzill si s'ignoren aquests casos.
Especificació | Estat | Comentaris |
---|---|---|
{{SpecName('ES5.1', '#sec-15.4.4.15', 'Array.prototype.lastIndexOf')}} | {{Spec2('ES5.1')}} | Definició inicial. Implementat a JavaScript 1.6. |
{{SpecName('ES6', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}} | {{Spec2('ESDraft')}} |
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatIE("9")}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-0
. Per exemple, [0].lastIndexOf(0, -0)
ara sempre retornarà +0
({{bug(1242043)}}).