MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/8d22564490d8

Array.prototype.fill()

This is a new technology, part of the ECMAScript 2015 (ES6) standard.
This technology's specification has been finalized, but check the compatibility table for usage and implementation status in various browsers.

O método fill() preenche todos os valores do array a partir do índice inicial a um índice final com um valor estático.

Sintaxe

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

Parâmetros

value
Valor para preencher o array.
start
Opcional. Índice inicial.
end
Opcional. Índice final.

Descrição

O intervalo de preenchimento dos elemento é  [início, final).

O método fill pode receber até três argumentos value, start and end. Os argumentos start e end são opcionais com valor padrão 0 (start) e o tamanho do objeto (end).

Se o start for negativo, ele será tratado como length+start onde length é o tamanho total do array. Se o end for negativo, ele será tratado como length+end.

A função fill é intencionalmente genérica, ele não precisa que o valor do this seja um objeto Array.

O método fill é um método mutável, ele irá mudar o objeto em si, e retorná-lo, não somente uma cópia do objeto.

Exemplos

[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) {

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

    var O = Object(this);

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

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

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

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

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

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

    // Step 13.
    return O;
  };
}

Especificações

Especificação Status Comentário
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype.fill' in that specification.
Standard Definição inicial.

Compatibilidade com os navegadores

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suporte básico 45 [1] 31 (31) Não suportado Não suportado 7.1
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suporte básico Não suportado Não suportado 31.0 (31) Não suportado Não suportado 8.0

[1] Começando com Chrome 36, isto era disponível com uma mudança nas preferencias. Em chrome://flags, ativar a entrada “Enable Experimental JavaScript”.

Ver também

Etiquetas do documento e colaboradores

 Colaboradores desta página: ronniery, raduq
 Última atualização por: ronniery,