Référence de JavaScript 1.5 Core:Objets globaux:Array:indexOf
Un article de MDC.
Sommaire |
[modifier] Résumé
Renvoie le premier indice auquel un élément donné peut être trouvé dans le tableau, ou -1 s'il n'est pas présent.
| Méthode de Array | |
| Implémenté dans : | JavaScript 1.6 (Gecko 1.8b2 et supérieurs) |
| Édition d'ECMAScript : | aucune |
[modifier] Syntaxe
var index = array.indexOf(element[, depuisIndice]);
[modifier] Paramètres
-
element - Élément à localiser dans le tableau.
-
depuisIndice - L'indice à partir duquel débuter la recherche. Vaut 0 par défaut, c'est-à-dire que la recherche se fera dans le tableau entier. Si l'indice est plus grand ou égal à la longueur du tableau, -1 sera renvoyé, et le tableau ne sera pas examiné. S'il est négatif, il est pris comme un décalage depuis la fin du tableau. Notez que même lorsque l'indice est négatif, le tableau est toujours parcouru du début vers la fin. Si l'indice calculé est inférieur à 0, la recherche se fera dans tout le tableau.
[modifier] Description
indexOf compare element aux éléments du tableau en utilisant l'égalité stricte (la même méthode que l'opérateur ===, ou triple-égalité).
[modifier] Compatibilité
indexOf est une extension de JavaScript au standard ECMA-262 standard. En tant que telle, elle peut ne pas être présente dans d'autres implémentations de ce standard. Il est possible de contourner cette absence en ajoutant le code suivant au début de vos scripts, qui permettra d'utiliser indexOf dans les implémentations d'ECMA-262 qui ne le gèrent pas nativement.
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
Notez que cette implémentation se veut totalement compatible avec indexOf dans Firefox et le moteur Javascript SpiderMonkey, notamment pour les cas où l'indice passé à indexOf n'est pas une valeur entière. Si vous avez l'intention de l'utiliser dans des applications réelles, vous pouvez ne pas avoir besoin de tout le code pour calculer from.
[modifier] Exemples
[modifier] Exemple : utilisation d'indexOf
L'exemple suivant utilise indexOf pour trouver des valeurs dans un tableau.
array = [2, 5, 9]; index = array.indexOf(2); // l'indice est 0 index = array.indexOf(7); // l'indice est -1
[modifier] Exemple : recherche de toutes les occurrences d'un élément
L'exemple suivant utilise indexOf pour trouver tous les indices d'un élément dans un tableau donné, en utilisant push pour les ajouter successivement à un autre tableau.
var indices = [];
var idx = array.indexOf(element)
while (idx != -1) {
indices.push(idx);
idx = array.indexOf(element, idx + 1);
}