El método fill() rellena todos los elementos de un arreglo desde el índice start hasta el índice end, con el valor estático de value.

Sintaxis

arr.fill(value[, start = 0[, end = this.length]])

Parámetros

value
Valor con el que se va rellenar el arreglo.
start Optional
Índice inicial, por defecto es 0.
end Optional
Índice final, por defecto es this.length.

Valor de retorno

El array modificado.

Descripción

Los elementos a llenar son  [principio, final).

El método fill  toma hasta tres argumentos; value, start y end. El primero va a ser el valor que queremos asignar al arreglo y luego los argumentos start y end que son opcionales,  con valores por defecto es cero y la propiedad length del objeto, respectivamente.

Si start es negativo, éste es tratado como length+star, donde length es el largo del arreglo, sí end es negativo, este es tratado como lenght+end.

La función fill es intencionalmente genérica, no require que el valor de  this sea un objeto Array necesariamente.

El método fill es mutador, pudiendo cambiar al objeto accedido por this, y devolverlo, y no sólo retornar una copia de este.

Cuando el método fill pasa un objeto, copiará la referencia y completará el array con referencias a ese objeto.

Ejemplos

[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, 3);         // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2);       // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3]
[1, 2, 3].fill(4, 3, 5);         // [1, 2, 3]
Array(3).fill(4);                // [4, 4, 4]
[].fill.call({ length: 3 }, 4);  // {0: 4, 1: 4, 2: 4, length: 3}

// Objects by reference.
var arr = Array(3).fill({}) // [{}, {}, {}];
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]

Polyfill

if (!Array.prototype.fill) {
  Object.defineProperty(Array.prototype, 'fill', {
    value: function(value) {

      // Pasos 1-2.
      if (this == null) {
        throw new TypeError('esto es nulo o no definido');
      }

      var O = Object(this);

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

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

      // Paso 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;

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

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

      // Paso 13.
      return O;
    }
  });
}

Especificaciones

Especificación Estado Comentario
ECMAScript 2015 (6th Edition, ECMA-262)
La definición de 'Array.prototype.fill' en esta especificación.
Standard Definición inicial.
ECMAScript Latest Draft (ECMA-262)
La definición de 'Array.prototype.fill' en esta especificación.
Draft  

Compatibilidad con navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Soporte básicoChrome Soporte completo 45Edge Soporte completo SiFirefox Soporte completo 31IE Sin soporte NoOpera Soporte completo SiSafari Soporte completo 8WebView Android Soporte completo SiChrome Android Soporte completo SiEdge Mobile Soporte completo SiFirefox Android Soporte completo 31Opera Android Soporte completo SiSafari iOS Soporte completo 8Samsung Internet Android Soporte completo Sinodejs Soporte completo 4.0.0
Soporte completo 4.0.0
Soporte completo 0.12
Deshabilitado
Deshabilitado From version 0.12: this feature is behind the --harmony runtime flag.

Leyenda

Soporte completo  
Soporte completo
Sin soporte  
Sin soporte
El usuario debe de habilitar explícitamente esta característica.
El usuario debe de habilitar explícitamente esta característica.

Ver también

Etiquetas y colaboradores del documento

Colaboradores en esta página: lajaso, ticdenis, luisNavasArg, eljonims, cesarve77
Última actualización por: lajaso,