Most efficient way to create a zero filled JavaScript array?

前端 未结 30 1663
花落未央
花落未央 2020-11-22 05:58

What is the most efficient way to create an arbitrary length zero filled array in JavaScript?

30条回答
  •  执笔经年
    2020-11-22 06:06

    It might be worth pointing out, that Array.prototype.fill had been added as part of the ECMAScript 6 (Harmony) proposal. I would rather go with the polyfill written below, before considering other options mentioned on the thread.

    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;
      };
    }
    

提交回复
热议问题