Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.
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.
El método fill()
rellena todos los elementos de un arreglo desde el índice start hasta el índice end, con el valor estático de value.
Sintaxis
arr.fill(value[, start = 0[, end = this.length]])
Parametros
value
- Valor con el que se va rellenar el arreglo
start
- Opcional. Principio del índice
end
- Opcional. Final del índice
Descripción
Los elementos del intervalo a llenar son [start
, end
).
El método fill
toma hasta tres argumentos; value
, start
y end
. Los argumentos start
y end
son opcionales, con valores por defecto de cero y la propiedad length
del objeto, respectivamente.
Si start
es negativo, éste es tratado como length+star,
donde length
es el largo del arreglo, sí end
es negativo, este es tratado como lenght+end
.
La función fill es intencionalmente genérica, no require que el valor de this
sea un objeto Array necesariamente.
El método fill es mutador, pudiendo cambiar al objeto accedido por this
, y devolverlo, y no sólo retornar una copia de este.
Ejemplos
[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; }; }
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Array.prototype.fill' in that specification. |
Standard | Initial definition. |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 45 (36 [1]) | 31 (31) | No support | No support | 7.1 |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | No support | No support | 31.0 (31) | No support | No support | 8.0 |
[1] Available behind a preference. In chrome://flags, activate the entry “Enable Experimental JavaScript”.