Die fill()
Methode befüllt ein Array mit einem statischen Wert von einem Startindex bis zu einem Endindex.
Syntax
arr.fill(value[, start = 0[, end = this.length]])
Parameter
value
- Wert, mit dem ein Array gefüllt werden soll.
start
- Optional. Startindex.
end
- Optional. Endindex.
Rückgabewert
Das geänderte Array.
Beschreibung
Das mit Elementen zu füllende Intervall ist [start
, end
).
Die fill
Methode nimmt bis zu drei Argumente entgegen: value
, start
und end
. Die Argumente start
und end sind optional und haben als Standardwert 0 und die Länge des this
Objektes.
Wenn start negativ ist, wird es als length+start
behandelt, wobei length
die Länge des Arrays ist. Wenn end
negativ ist, wird es als length+end behandelt.
Die fill Funktion ist absichtlich generisch. Es ist nicht nötig, dass der this
Wert ein Array Objekt ist.
Die fill Methode ist eine verändernde Methode. Sie verändert das this
Objekt selbst und gibt dieses zurück. Sie erstellt keine Kopie des Objektes.
Beispiele
[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; }; }
Spezifikationen
Spezifikation | Status | Kommentar |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Die Definition von 'Array.prototype.fill' in dieser Spezifikation. |
Standard | Initiale Definition. |
ECMAScript 2017 Draft (ECMA-262) Die Definition von 'Array.prototype.fill' in dieser Spezifikation. |
Entwurf |
Browserkompatibilität
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 45 [1] | 31 (31) | Nicht unterstützt | Nicht unterstützt | 7.1 |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | Nicht unterstützt | Nicht unterstützt | 31.0 (31) | Nicht unterstützt | Nicht unterstützt | 8.0 |
[1] Angefangen mit Chrome 36 war die Funktion mit einer Einstellung verfügbar. In chrome://flags muss der Punkt “Enable Experimental JavaScript” aktiviert werden.