Esta tradução está incompleta. Por favor, ajude a traduzir este artigo.

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 elementos é  [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.
Padrão Definição inicial.

Compatibilidade com os navegadores

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!

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: SphinxKnight, erickvieira, ronniery, raduq
Última atualização por: SphinxKnight,