Visit Mozilla.org

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.

[modifier] Voir aussi

indexOf