--- 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]])
value
start
{{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")}}