Array.prototype.fill()

La méthode fill() remplit tout les éléments d'un tableau entre deux index avec une valeur statique.

Syntaxe

arr.fill(valeur[, début = 0[, fin = this.length]])

Paramètres

valeur
Valeur avec laquelle remplir le tableau.
début
Index de début.
fin
Index de fin.

Valeur de retour

Le tableau modifié par la méthode.

Description

Les éléments pour lesquels on utilisera la valeur sont ceux contenus dans l'intervalle de positions [début, fin].

La méthode fill() prend jusqu'à trois arguments : valeur, début et fin. Les arguments début et fin sont optionnels. Leurs valeurs par défaut sont respectivement 0 et la taille length de l'objet this.

Si début est négatif, il sera traité comme length+débutlength est la taille du tableau. Si fin est négatif, il est traité comme length+fin.

La fonction fill() est intentionnellement générique, il n'est pas nécessaire que sa valeur this soit un objet Array.

La méthode fill() est une méthode de modification, elle changera l'objet this lui-même, et renverra l'objet modifié. Elle ne crée pas de copie.

Exemples

[1, 2, 3].fill(4);            // [4, 4, 4]
[1, 2, 3].fill(4, 1);         // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2);      // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1);      // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2);    // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN);  // [1, 2, 3]
Array(3).fill(4);             // [4, 4, 4]
[].fill.call({length: 3}, 4); // {0: 4, 1: 4, 2: 4, length: 3}

Prothèse d'émulation (polyfill)

if (![].fill) {
  Array.prototype.fill = function(valeur) {

    // Steps 1-2.
    var O = Object(this);

    // Steps 3-5.
    var len = parseInt(O.length);

    // Steps 6-7.
    var debut = arguments[1];
    var debutRelatif = parseInt(debut) || 0;

    // Step 8.
    var k = debutRelatif < 0
            ? Math.max(len + debutRelatif, 0)
            : Math.min(debutRelatif, len);

    // Steps 9-10.
    var fin = arguments[2];
    var finRelative = fin === undefined
                      ? len 
                      : (parseInt(fin) || 0);

    // Step 11.
    var final = finRelative < 0
                ? Math.max(len + finRelative, 0)
                : Math.min(finRelative, len);

    // Step 12.
    for (; k < final; k++) {
        O[k] = valeur;
    }

    // Step 13.
    return O;
  };
}

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Array.prototype.fill' dans cette spécification.
Standard Définition initiale.
ECMAScript 2017 Draft (ECMA-262)
La définition de 'Array.prototype.fill' dans cette spécification.
Projet  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple 45 [1] 31 (31) 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 31.0 (31) Pas de support Pas de support 8.0

[1] À partir de Chrome 36, cette fonctionnalité était disponible via une préférence. Sous chrome://flags, il fallait activer l'élément « Activer la fonctionnalité expérimentale JavaScript ».

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, Fredchat, ferncoder
 Dernière mise à jour par : SphinxKnight,