Visit Mozilla.org

Référence de JavaScript 1.5 Core:Objets globaux:Array:map

Un article de MDC.


Sommaire

[modifier] Résumé

Crée un nouveau tableau constitué des résultats de l'appel d'une fonction fournie sur chaque élément du tableau.

Méthode de Array
Implémentation : JavaScript 1.6 (Gecko 1.8b2 et ultérieurs)
Édition d'ECMAScript : aucune

[modifier] Syntaxe

var resultat = array.map(callback[, objetThis]);

[modifier] Parameters

callback 
Fonction produisant un élément du nouveau tableau à partir d'un élément du tableau courant.
objetThis 
Objet à utiliser comme this lors de l'exécution de callback.

[modifier] Description

map appelle une fonction callback une seule fois pour chaque élément dans le tableau, dans l'ordre, et construit un nouveau tableau avec les résultats. callback est uniquement invoquée pour les indices du tableau auxquels des valeurs ont été assignées ; elle n'est pas invoquée pour les indices qui ont été supprimés ou auxquels aucune valeur n'a jamais été assignée.

La fonction callback est appelée avec trois paramètres : la valeur de l'élément, l'indice de l'élément et l'objet Array parcouru.

Si un paramètre objetThis est fourni à map, il sera utilisé comme valeur de this pour chaque invocation de callback. S'il n'est pas fourni, ou vaut null, l'objet global associé à callback sera utilisé à la place.

La méthode map ne modifie pas le tableau sur laquelle elle est appelée.

L'intervalle des éléments traités par map est défini avant la première invocation de callback. Les éléments qui sont ajoutés après le début de l'appel à map ne seront pas visités par callback. Si des éléments existants du tableau sont modifiés ou supprimés, leur valeur telle que passée à callback sera leur valeur au moment de leur visite par map ; les éléments qui ont été supprimés ne seront pas visités.

[modifier] Compatibilité

La méthode map 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 ceci en insérant le code qui suit au début de vos scripts, permettant d'utiliser map dans des implémentation d'ECMA-262 ne la gérant pas nativement. Cet algorithme est le même que celui utilisé dans Firefox et SpiderMonkey.

if (!Array.prototype.map)
{
  Array.prototype.map = function(fun /*, thisp*/)
  {
    var len = this.length;
    if (typeof fun != "function")
      throw new TypeError();

    var res = new Array(len);
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this)
        res[i] = fun.call(thisp, this[i], i, this);
    }

    return res;
  };
}

[modifier] Exemples

[modifier] Exemple : passage de mots (chaînes) au pluriel dans un tableau

Le code qui suit crée un tableau de formes « plurielles » de noms contenus dans un tableau de leurs formes au singulier.

function mettreAuPluriel(singulier)
{
  return singulier + "s";
}

var singuliers = ["pied", "main", "tête"];
var pluriels = singuliers.map(mettreAuPluriel);
// pluriels vaut ["pieds", "mains", "têtes"]
// singuliers ne change pas

[modifier] Exemple : transformation d'un tableau de nombres en leurs racines carrées

Le code qui suit prend un tableau de nombres et crée un nouveau tableau contenant les racines carrés des nombres dans le premier tableau.

var nombres = [1, 4, 9];
var racines = nombres.map(Math.sqrt);
// racines vaut [1, 2, 3]
// nombres est toujours [1, 4, 9]