mozilla
Your Search Results

    Array.prototype.fill()

    This is an experimental technology, part of the ECMAScript 6 (Harmony) proposal.
    Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future version of browsers as the spec changes.

    Summary

    The fill() method fills all the elements of an array from a start index to an end index with a static value.

    Syntax

    arr.fill(value[, start = 0[, end = this.length]])

    Parameters

    value
    Value to fill an array.
    start
    Optional. Start index.
    end
    Optional. End index.

    Description

    The elements interval to fill is [start, end).

    The fill method takes up to three arguments value, start and end. The start and end arguments are optional with default values of 0 and the length of the this object.

    If start is negative, it is treated as length+start where length is the length of the array. If end is negative, it is treated as length+end.

    The fill function is intentionally generic, it does not require that its this value be an Array object.

    The fill method is a mutable method, it will change this object itself, and return it, not just return a copy of it.

    Examples

    [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]
    [].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 6 (ECMA-262)
    The definition of 'Array.prototype.fill' in that specification.
    Draft Initial definition.

    Browser compatibility

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Basic support 36[1] 31 (31) Not supported Not supported 7.1
    Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support Not supported Not supported 31.0 (31) Not supported Not supported iOS 8

    [1] The feature is available behind a preference. In chrome://flags, activate the entry “Enable Experimental JavaScript”.

    See also

    Document Tags and Contributors

    Last updated by: SphinxKnight,
    Hide Sidebar