Apply your JS skills to key Mozilla projects as an MDN Fellow! http://mzl.la/MDNFellowship

mozilla
Vos résultats de recherche

    Array.prototype.findIndex()

    Cette fonction, proposition pour ECMAScript 6 (Harmony), est expérimentale
    Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
    Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

    Résumé

    La méthode findIndex() renvoie l'indice d'un élément du tableau qui satisfait une condition donnée par une fonction. Si la fonction renvoie faux pour tous les éléments du tableau, le résultat vaut -1.

    Voir également la méthode find() qui renvoie la valeur (et non l'indice) d'un des éléments trouvés.

    Syntaxe

    arr.findIndex(callback[, thisArg])

    Paramètres

    callback
    Une fonction à exécuter sur chaque valeur du tableau. Cette fonction prend trois arguments :
    élément
    L'élément du tableau qui doit être traité.
    indice
    L'indice de l'élément du tableau en cours de traitement.
    tableau
    Le tableau sur lequel a été appelé findIndex.
    argumentThis
    L'objet à utiliser comme contexte this lorsque le callback est exécuté.

    Description

    La méthode findIndex exécute la fonction callback une fois pour chaque élément présent dans le tableau jusqu'à ce que callback renvoie une valeur vraie. S'il existe un tel élément, findIndex renverra immédiatement l'indice de l'élément concerné. Sinon, findIndex renverra -1. callback n'est appelé que pour les indices du tableau ayant des valeurs assignées, il n'est pas appelé pour les indices qui auraient été supprimés ou qui n'auraient pas été assignés.

    callback possède trois arguments : la valeur de l'élément, l'indice de l'élément et l'objet Array qui est parcouru

    Si l'argument argumentThis est fourni à la méthode findIndex, il sera utilisé comme « contexte » this pour chaque appel de callback. S'il n'est pas fourni, undefined sera utilisé.

    findIndex ne modifie pas le tableau sur laquelle elle est appelée.

    Les éléments qui seront traités par findIndex sont « récoltés » avant le premier appel de callback. Tout élément qui sera ajouté au tableau après l'appel de findIndex ne sera pas utilisé avec callback. Si un élément existant, pas encore visité, est modifié par callback, la valeur qui sera passé au callback pour cet élément modifié sera celle que findIndex utilise lorsqu'elle utilise l'indice de l'élément en question. Les éléments supprimés ne sont pas pris en considération.

    Exemples

    Trouver l'indice d'un nombre premier dans un tableau

    L'exemple qui suit illustre comment trouver l'indice d'un élément qui est un nombre premier dans un tableau (ou qui renvoie -1 s'il n'y a pas de nombre premier).

    function estPremier(élément, index, array) {
      var début = 2;
      while (début <= Math.sqrt(élément)) {
        if (élément % début++ < 1) {
          return false;
        }
      }
      return élément > 1;
    }
    
    console.log([4, 6, 8, 12].findIndex(estPremier)); // -1, aucun trouvé
    console.log([4, 6, 7, 12].findIndex(estPremier)); // 2

    Prothèse d'émulation (polyfill)

    Cette méthode fait partie de la spécification ECMAScript 6 et peut ne pas être présente pour toutes les implémentations JavaScript. Il est toutefois possible d'utiliser une couche d'émulation (ou polyfill) pour compléter Array.prototype.find avec le fragment de code suivant :

    if (!Array.prototype.findIndex) {
      Array.prototype.findIndex = function(predicate) {
        if (this == null) {
          throw new TypeError('Array.prototype.findIndex appelé sur null ou undefined');
        }
        if (typeof predicate !== 'function') {
          throw new TypeError('predicate doit être une fonction');
        }
        var list = Object(this);
        var length = list.length >>> 0;
        var thisArg = arguments[1];
        var value;
    
        for (var i = 0; i < length; i++) {
          value = list[i];
          if (predicate.call(thisArg, value, i, list)) {
            return i;
          }
        }
        return -1;
      };
    }

    Spécifications

    Spécification Statut Commentaires
    ECMAScript 6 (ECMA-262)
    La définition de 'Array.prototype.findIndex' dans cette spécification.
    Draft Définition initiale.

    Compatibilité des navigateurs

    Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Support simple Pas de support 25.0 (25.0) Pas de support Pas de support 7.1
    Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Support simple Pas de support Pas de support 25.0 (25.0) Pas de support Pas de support iOS 8

    Voir aussi

    Étiquettes et contributeurs liés au document

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