mozilla
Vos résultats de recherche

    Array.prototype.lastIndexOf()

    Résumé

    La méthode lastIndexOf() permet de renvoyer le dernier indice pour lequel une valeur donnée est présente dans un tableau. Si la valeur recherchée n'est pas présente, le résultat sera -1. Lors de la recherche, le tableau est parcouru dans le sens des index décroissants, à partir de l'index indexDébut.

    Syntaxe

    arr.lastIndexOf(élémentRecherché[, indexDébut = arr.length])

    Paramètres

    élémentRecherché
    L'élément à qu'on cherche dans le tableau.
    indexDébut
    L'index à partir duquel commencer la recherche dans le tableau (la recherche s'effectuant à l'envers). Si le paramètre est absent, sa valeur par défaut sera la longueur du tableau, le tableau sera alors parcouru dans sa totalité. Si l'index est plus grand ou égal à la longueur du tableau, le tableau sera parcouru en entier. Si l'index est négatif, la recherche commencera d'autant d'éléments à partir de la fin du tableau. À noter que, même si l'index est négatif, la recherche s'effectuera toujours de la fin jusqu'au début du tableau. Si l'index calculé est inférieur à 0, la méthode renverra -1 et le tableau ne sera pas parcouru.

    Description

    lastIndexOf compare élémentRecherché aux éléments contenus dans le tableau en utilisant une égalité stricte (l'égalité utilisée par l'opérateur ===).

    Exemples

    Utiliser lastIndexOf

    Dans l'exemple suivant, on utilise lastIndexOf afin de situer une valeur dans un tableau.

    var tableau = [2, 5, 9, 2];
    tableau.lastIndexOf(2);     // 3
    tableau.lastIndexOf(7);     // -1
    tableau.lastIndexOf(2, 3);  // 3
    tableau.lastIndexOf(2, 2);  // 0
    tableau.lastIndexOf(2, -2); // 0
    tableau.lastIndexOf(2, -1); // 3

    Trouver toutes les occurrences d'un élément

    The following example uses lastIndexOf to find all the indices of an element in a given array, using push to add them to another array as they are found.

    var indices = [];
    var tableau = ['a', 'b', 'a', 'c', 'a', 'd'];
    var élément = 'a';
    var idx = tableau.lastIndexOf(élément);
    while (idx != -1) {
      indices.push(idx);
      idx = (idx > 0 ? tableau.lastIndexOf(élément, idx - 1) : -1);
    }
    
    console.log(indices);
    // [4, 2, 0]

    Note that we have to handle the case idx == 0 separately here because the element will always be found regardless of the fromIndex parameter if it is the first element of the array. This is different from the indexOf method.

    Prothèse d'émulation (polyfill)

    lastIndexOf a été ajouté avec la cinquième édition du standard ECMA-262 ; il peut donc ne pas être présent dans tous les navigateurs web. Vous pouvez contourner ce problème en insérant le code suivant au début de vos scripts. Il vous permettra d'utiliser lastIndexOf avec les navigateurs qui ne le supportent pas nativement. L'algorithme qui suit est le même que celui spécifié par ECMAScript 5 si Object, TypeError, Number, Math.floor, Math.abs, et Math.min n'ont pas été modifiés et conservent leurs valeurs originales.

    // 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;
      };
    }

    On notera que cette implémentation vise une compatibilité absolue de lastIndexOf dans Firefox et le moteur JavaScript SpiderMonkey, incluant plusieurs cas très particuliers. Si vous comptez l'utiliser dans une application, vous devriez pouvoir calculer from avec un code beaucoup moins compliqué.

    Spécifications

    Spécification Statut Commentaires
    ECMAScript 5.1 (ECMA-262)
    La définition de 'Array.prototype.lastIndexOf' dans cette spécification.
    Standard Définition initiale. Implémentée avec JavaScript 1.6.
    ECMAScript 6 (ECMA-262)
    La définition de 'Array.prototype.lastIndexOf' dans cette spécification.
    Draft  

    Compatibilité des navigateurs

    Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Support simple (Oui) (Oui) 9 (Oui) (Oui)
    Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

    Voir aussi

    Étiquettes et contributeurs liés au document

    Contributors to this page: tregagnon, SphinxKnight, teoli
    Dernière mise à jour par : SphinxKnight,