mozilla
您的搜索结果

    Array.prototype.fill()

    该特性处于 ECMAScript 6 规范草案中,目前的实现在未来可能会发生微调,请谨慎使用。

    概述

    使用 fill() 方法, 可以将一个数组中指定区间的所有元素的值, 都替换成或者说填充成为某个固定的值.

    语法

    Array.prototype.fill (value, start = 0, end = this.length)
    

    参数

    value
    用来填充数组元素的值.
    start
    开始索引.
    end
    结束索引.

    描述

    具体要填充的元素区间是 [start, end) , 一个半开半闭区间.

    fill 方法接受三个参数 value, start 以及 end. startend 参数是可选的, 其默认值分别为 0 和 this 对象的 length 属性值.

    如果 start 是个负数, 则开始索引会被自动计算成为 length+start, 其中 length 是 this 对象的 length 属性值. 如果 end 是个负数, 则结束索引会被自动计算成为 length+end.

    fill 方法故意被设计成通用方法, 也就是说它不需要 this 值必须是个数组对象, 类数组对象也是可以调用该方法的 .

    fill 方法是个可变方法, 它会改变调用它的 this 对象本身, 然后返回它, 而并不是返回一个副本.

    示例

    [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 (![].fill) {
      Array.prototype.fill = function(value) {
    
        // Steps 1-2.
        var O = Object(this);
    
        // Steps 3-5.
        var len = parseInt(O.length);
    
        // Steps 6-7.
        var start = arguments[1];
        var relativeStart = parseInt(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 
                          : (parseInt(end) || 0);
    
        // Step 11.
        var final = relativeEnd < 0
                    ? Math.max(len + relativeEnd, 0)
                    : Math.min(relativeEnd, len);
    
        // Step 12.
        for (; k < final; k++) {
            O[k] = value;
        }
    
        // Step 13.
        return O;
      };
    }
    

    规范

    Specification Status Comment
    ECMAScript 6 (ECMA-262)
    Array.prototype.fill
    Release Candidate Initial definition.

    浏览器兼容性

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Basic support 未实现 31 (31) 未实现 未实现 未实现
    Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support 未实现 未实现 31.0 (31) 未实现 未实现 未实现

    相关链接

    文档标签和贡献者

    此页面的贡献者有: ziyunfei, teoli
    最后编辑者: ziyunfei,
    隐藏侧边栏