Array.prototype.fill()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2015 browserübergreifend verfügbar.
Die Methode fill() von Array-Instanzen ändert alle Elemente innerhalb eines Indexbereichs in einem Array auf einen festen Wert. Sie gibt das geänderte Array zurück.
Probieren Sie es aus
const array = [1, 2, 3, 4];
// Fill with 0 from position 2 until position 4
console.log(array.fill(0, 2, 4));
// Expected output: Array [1, 2, 0, 0]
// Fill with 5 from position 1
console.log(array.fill(5, 1));
// Expected output: Array [1, 5, 5, 5]
console.log(array.fill(6));
// Expected output: Array [6, 6, 6, 6]
Syntax
fill(value)
fill(value, start)
fill(value, start, end)
Parameter
value-
Wert, mit dem das Array gefüllt wird. Beachten Sie, dass alle Elemente im Array genau diesen Wert erhalten: Wenn
valueein Objekt ist, verweist jede Position im Array auf dieses Objekt. startOptional-
Nullbasierter Index, ab dem das Array gefüllt wird, in eine Ganzzahl umgewandelt.
- Ein negativer Index zählt vom Ende des Arrays zurück – wenn
-array.length <= start < 0, wirdstart + array.lengthverwendet. - Wenn
start < -array.lengthgilt oderstartweggelassen wird, wird0verwendet. - Wenn
start >= array.lengthgilt, wird kein Index gefüllt.
- Ein negativer Index zählt vom Ende des Arrays zurück – wenn
endOptional-
Nullbasierter Index, an dem das Füllen endet, in eine Ganzzahl umgewandelt.
fill()füllt bis zum Indexend, aber nicht einschließlich dieses Index.- Ein negativer Index zählt vom Ende des Arrays zurück – wenn
-array.length <= end < 0, wirdend + array.lengthverwendet. - Wenn
end < -array.lengthgilt, wird0verwendet. - Wenn
end >= array.lengthgilt oderendweggelassen wird oderundefinedist, wirdarray.lengthverwendet. Dadurch werden alle Indizes bis zum Ende gefüllt. - Wenn
endeine Position vor oder an der durchstartbestimmten Position bezeichnet, wird nichts gefüllt.
- Ein negativer Index zählt vom Ende des Arrays zurück – wenn
Rückgabewert
Das geänderte, mit value gefüllte Array.
Beschreibung
Die Methode fill() ist eine verändernde Methode. Sie ändert die Länge von this nicht, verändert aber dessen Inhalt.
Die Methode fill() füllt auch leere Positionen in dünn besetzten Arrays mit value.
Die Methode fill() ist generisch. Sie setzt lediglich voraus, dass der Wert von this eine length-Eigenschaft besitzt. Obwohl Strings ebenfalls arrayähnlich sind, eignet sich diese Methode nicht für sie, da Strings unveränderlich sind.
Hinweis:
Die Verwendung von Array.prototype.fill() auf einem leeren Array (length = 0) verändert es nicht, da das Array keine Elemente enthält, die verändert werden könnten.
Wenn Sie Array.prototype.fill() beim Deklarieren eines Arrays verwenden möchten, stellen Sie sicher, dass das Array eine length größer als 0 hat.
Siehe Beispiel.
Beispiele
>fill() verwenden
console.log([1, 2, 3].fill(4)); // [4, 4, 4]
console.log([1, 2, 3].fill(4, 1)); // [1, 4, 4]
console.log([1, 2, 3].fill(4, 1, 2)); // [1, 4, 3]
console.log([1, 2, 3].fill(4, 1, 1)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, 3, 3)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, -3, -2)); // [4, 2, 3]
console.log([1, 2, 3].fill(4, NaN, NaN)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, 3, 5)); // [1, 2, 3]
console.log(Array(3).fill(4)); // [4, 4, 4]
// A single object, referenced by each slot of the array:
const arr = Array(3).fill({}); // [{}, {}, {}]
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
Mit fill() eine Matrix aus Einsen erstellen
Dieses Beispiel zeigt, wie Sie eine Matrix erstellen, deren Werte alle 1 sind, ähnlich der Funktion ones() in Octave oder MATLAB.
const arr = new Array(3);
for (let i = 0; i < arr.length; i++) {
arr[i] = new Array(4).fill(1); // Creating an array of size 4 and filled of 1
}
arr[0][0] = 10;
console.log(arr[0][0]); // 10
console.log(arr[1][0]); // 1
console.log(arr[2][0]); // 1
Mit fill() ein leeres Array befüllen
Dieses Beispiel zeigt, wie Sie ein Array befüllen, indem Sie alle Elemente auf einen bestimmten Wert setzen.
Der Parameter end muss nicht angegeben werden.
const tempGirls = Array(5).fill("girl", 0);
Beachten Sie, dass das Array anfangs ein dünn besetztes Array ohne belegte Indizes war. fill() kann dieses Array dennoch füllen.
fill() für Objekte aufrufen, die keine Arrays sind
Die Methode fill() liest die length-Eigenschaft von this und setzt den Wert jeder Eigenschaft mit einem ganzzahligen Schlüssel von start bis end.
const arrayLike = { length: 2 };
console.log(Array.prototype.fill.call(arrayLike, 1));
// { '0': 1, '1': 1, length: 2 }
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.fill> |