--- title: Array.prototype.fill() slug: Web/JavaScript/Reference/Global_Objects/Array/fill tags: - Array - ECMAScript 2015 - JavaScript - Prototipo - metodo - polyfill translation_of: Web/JavaScript/Reference/Global_Objects/Array/fill original_slug: Web/JavaScript/Referencia/Objetos_globales/Array/fill ---
El método fill() cambia todos los elementos en un arreglo por un valor estático, desde el índice start (por defecto 0) hasta el índice end (por defecto array.length). Devuelve el arreglo modificado.
{{EmbedInteractiveExample("pages/js/array-fill.html")}}
arr.fill(value[, start = 0[, end = this.length]])
valuestart {{optional_inline}}end {{optional_inline}}this.length.El arreglo modificado, rellenado con valor.
start es negativo, se interpreta como array.length + start.end es negativo, se interpreta como array.length + end.fill es genérico de forma intencional: no requiere que su valor this sea un objeto Array.fill es un método mutador: modifica el arreglo sobre el que se invoca; no devuelve una copia de éste.[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" }]
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;
}
});
}
| Especificación | Estado | Comentario |
|---|---|---|
| {{SpecName('ES6', '#sec-array.prototype.fill', 'Array.prototype.fill')}} | {{Spec2('ES6')}} | Definición inicial. |
| {{SpecName('ESDraft', '#sec-array.prototype.fill', 'Array.prototype.fill')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.Array.fill")}}