We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

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

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Soporte básico45 Si31 No Si8
FeatureAndroid webviewChrome para AndroidEdge mobileFirefox para AndroidOpera AndroidiOS SafariSamsung Internet
Soporte básico Si Si Si31 Si8 Si

Ver también

Etiquetas y colaboradores del documento

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