Array.prototype.fill()

El m猫tode fill() omple tots els elements d'un array a partir d'una posici贸 inicial fins a una posici贸 final amb un valor est脿tic predeterminat.

Sintaxi

arr.fill(valor[, posInicial = 0[, posFinal = this.length]])

Par脿metres

valor
Valor amb el que s'omplir脿 l'array.
posInicial
Opcional. Posici贸 inicial.
posFinal
Opcional. Posici贸 final.

Descripci贸

L'interval d'elements a omplir 茅s [posInicial, posFinal) (inici inclusiu, final exclusiu).

El m猫tode fill accepta fins a tres arguments: valor, posInicialposFinal.

Els arguments posInicial i posFinal s贸n opcionals i si no s'especifiquen prenen per defecte els valors 0 i la propietat length de l'objecte this, respectivament.

Si posInicial 茅s negatiu, es considera com a length+start on length 茅s la mida de l'array. Si posFinal 茅s negatiu es considera com a length+end.

La funci贸 fill 茅s gen猫rica intencionalment i no requereix que el valor this sigui un objecte de tipus Array.

El m猫tode fill 茅s mutable, ja que canviar脿 l'objecte this en si mateix i despr茅s el retornar脿 com a resultat, en comptes de retornar una copia d'aquest.

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}

Polyfill

if (!Array.prototype.fill) {
  Array.prototype.fill = function(value) {

    // Pasos 1-2.
    if (this == null) {
      throw new TypeError('this is null or not defined');
    }

    var O = Object(this);

    // Pasos 3-5.
    var len = O.length >>> 0;

    // Pasos 6-7.
    var start = arguments[1];
    var relativeStart = start >> 0;

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

    // Pasos 9-10.
    var end = arguments[2];
    var relativeEnd = end === undefined ?
      len : end >> 0;

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

    // Pasos 12.
    while (k < final) {
      O[k] = value;
      k++;
    }

    // Pasos 13.
    return O;
  };
}

Especificacions

Especificaci贸 Estat Comentaris
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype.fill' in that specification.
Standard Definici贸 inicial.

Compatibilitat amb navegadors

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
Caracter铆stica Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suport b脿sic 45 [1] 31 (31) No support No support 7.1
Caracter铆stica Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suport b脿sic No support No support 31.0 (31) No support No support 8.0

[1] A partir del Chrome 36, est脿 disponible a trav茅s d'una prefer猫ncia. A chrome://flags, activeu l'entrada 鈥淓nable Experimental JavaScript鈥.

Vegeu tamb茅