Die fill() Methode befüllt ein Array mit einem statischen Wert von einem Startindex bis zu einem Endindex. Der Endindex wird nicht mit eingeschlossen.

Syntax

arr.fill(value[, start[, end]])

Parameter

value
Wert, mit dem ein Array gefüllt werden soll.
start Optional
Startindex, Standardwert ist 0.
end Optional
Endindex, Standardwert ist this.length.

Rückgabewert

Das geänderte Array.

Beschreibung

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 length des this Objektes.

Wenn start negativ ist, wird stattdessen length+start benutzt, wobei length die Länge des Arrays ist. Wenn end negativ ist, wird stattdessen length+end benutzt.

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.

Wenn der fill Methode ein Objekt übergeben wird, wird das Objekt kopiert und die Referenz der Kopie wird im Array eingesetzt.

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, 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" }]

Polyfill

if (!Array.prototype.fill) {
  Object.defineProperty(Array.prototype, 'fill', {
    value: 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;
    }
  });
}

Wenn es wirklich notwendig ist veraltete JavaScript-Umgebungen zu unterstützen, die Object.defineProperty nicht unterstützen, ist es meistens besser Methoden von Array.prototype nicht mit einem Polyfill zu unterstützen, weil sie nicht als nicht-aufzählbar eingestellt werden können.

Spezifikationen

Spezifikation Status Kommentar
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Array.prototype.fill' in dieser Spezifikation.
Standard Initiale Definition.
ECMAScript Latest Draft (ECMA-262)
Die Definition von 'Array.prototype.fill' in dieser Spezifikation.
Entwurf  

Browserkompatibilität

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidEdge MobileFirefox für AndroidOpera für AndroidiOS SafariSamsung InternetNode.js
Grundlegende UnterstützungChrome Vollständige Unterstützung 45Edge Vollständige Unterstützung JaFirefox Vollständige Unterstützung 31IE Keine Unterstützung NeinOpera Vollständige Unterstützung JaSafari Vollständige Unterstützung 8WebView Android Vollständige Unterstützung JaChrome Android Vollständige Unterstützung JaEdge Mobile Vollständige Unterstützung JaFirefox Android Vollständige Unterstützung 31Opera Android Vollständige Unterstützung JaSafari iOS Vollständige Unterstützung 8Samsung Internet Android Vollständige Unterstützung Janodejs Vollständige Unterstützung 4.0.0
Vollständige Unterstützung 4.0.0
Vollständige Unterstützung 0.12
Deaktiviert
Deaktiviert From version 0.12: this feature is behind the --harmony runtime flag.

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung
Benutzer muss dieses Feature explizit aktivieren.
Benutzer muss dieses Feature explizit aktivieren.

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Mitwirkende an dieser Seite: schlagi123, Andreas_Dyballa, oliver-j, AndyTheDandy
Zuletzt aktualisiert von: schlagi123,