Array.prototype.fill în JavaScript

Tablouri (array) ES2015 (ES6)

Umple tabloul (sau o parte din el) cu aceeași valoare.

Sintaxă
tablou.fill(valoare, inceput, sfarsit)

Ce face Array.prototype.fill

fill scrie aceeași valoare pe toate pozițiile de la inceput până la sfarsit (exclus). Fără acești parametri, umple tot tabloul. Tabloul este modificat și returnat.

Atenție la obiecte: fill({}) pune același obiect pe toate pozițiile. Dacă modifici unul, se modifică toate.

Parametri

Parametru Descriere
valoare Valoarea scrisă.
inceput, sfarsit Opționali. Zona umplută; acceptă valori negative.

Ce returnează

Același tablou, modificat.

Exemple

Exemplul 1: Umplere totală și parțială

console.log(new Array(5).fill(0));
console.log([1, 2, 3, 4, 5].fill("x", 1, 3));
console.log([1, 2, 3, 4, 5].fill(9, -2));

Rezultat

[ 0, 0, 0, 0, 0 ]
[ 1, 'x', 'x', 4, 5 ]
[ 1, 2, 3, 9, 9 ]

Exemplul 2: Capcana obiectelor comune

const gresit = new Array(3).fill([]);
gresit[0].push("Ana");
console.log(gresit);

const corect = Array.from({ length: 3 }, () => []);
corect[0].push("Ana");
console.log(corect);

Rezultat

[ [ 'Ana' ], [ 'Ana' ], [ 'Ana' ] ]
[ [ 'Ana' ], [], [] ]

Greșeli frecvente

  • Creezi o matrice cu new Array(3).fill(new Array(3).fill(0)). Toate rândurile sunt același tablou; folosește Array.from cu o funcție.

Comenzi înrudite

  • Array.of / Array(): Creează un tablou din valorile primite; diferența față de constructorul Array().
  • Array.from: Creează un tablou nou din orice listă: text, Set, Map, NodeList sau un obiect cu length.
  • Array.prototype.copyWithin: Copiază o bucată din tablou peste altă poziție din același tablou, fără să schimbe lungimea.