Référence de JavaScript 1.5 Core:Objets globaux:Array:lastIndexOf
Un article de MDC.
Sommaire |
[modifier] Résumé
Renvoie le dernier indice auquel un élément donné peut être trouvé dans le tableau, ou -1 s'il n'y est pas présent. La recherche se fait de droite à gauche, à partir de indiceDébut.
| Méthode de Array | |
| Implémentation : | JavaScript 1.6 (Gecko 1.8b2 et ultérieurs) |
| Édition d'ECMAScript : | aucune |
[modifier] Syntaxe
var index = array.lastIndexOf(élémentRecherché[, indiceDébut]);
[modifier] Paramètres
-
élémentRecherché - Élément à localiser dans le tableau.
-
indiceDébut - The index at which to start searching backwards. Defaults to the array's length, i.e. the whole array will be searched. If the index is greater than or equal to the length of the array, the whole array will be searched. If negative, it is taken as the offset from the end of the array. Note that even when the index is negative, the array is still searched from back to front. If the calculated index is less than 0, -1 is returned, i.e. the array will not be searched.
[modifier] Description
lastIndexOf compare élémentRecherché aux éléments du tableau en utilisant l'égalité stricte (la même méthode que celle utilisé par l'opérateur ===, ou triple égalité).
[modifier] Compatibilité
lastIndexOf est une extension de JavaScript à la norme ECMA-262 ; en tant que telle, elle peut ne pas être présente dans d'autres implémentations de cette norme. Il est possible de contourner ce problème en ajoutant le code qui suit au début de vos scripts, ce qui leur permettra d'utiliser lastIndexOf dans les implémentations d'ECMA-262 qui ne le traitent pas nativement. Cet algorithme est exactement le même que celui utilisé dans Firefox et SpiderMonkey.
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;
};
}
Notez bien que cette implémentation est conçue pour offrir une compatibilité absolue avec la méthode lastIndexOf de Firefox et du moteur JavaScript SpiderMonkey, en ce compris certains cas limites. Si vous désirez utiliser cette méthode dans des applications réelles, il est probablement possible de calculer from avec un code moins compliqué en ignorant ces cas limites.
[modifier] Exemples
[modifier] Exemple : utilisation de lastIndexOf
Les exemples qui suivent utilisent lastIndexOf pour localiser des valeurs dans un tableau.
var array = [2, 5, 9, 2]; var index = array.lastIndexOf(2); // index vaut 3 index = array.lastIndexOf(7); // index vaut -1 index = array.lastIndexOf(2, 3); // index vaut 3 index = array.lastIndexOf(2, 2); // index vaut 0 index = array.lastIndexOf(2, -2); // index vaut 0 index = array.lastIndexOf(2, -1); // index vaut 3
[modifier] Exemple : recherche de toutes les occurrences d'un élément
L'exemple qui suit utilise lastIndexOf pour trouver tous les indices où se trouve un élément dans un tableau donné, et utilise push pour les ajouter à un autre tableau au fur et à mesure.
var indices = [];
var idx = array.lastIndexOf(element);
while (idx != -1)
{
indices.push(idx);
idx = (idx > 0 ? array.lastIndexOf(element, idx - 1) : -1);
}
Notez qu'il est ici nécessaire de traiter le cas où idx == 0 séparément car l'élément sera toujours trouvé quel que soit la valeur du paramètre indiceDébut s'il s'agit du premier élément du tableau. Ce comportement est différent de celui de la méthode indexOf.