在JavaScript中创建任意长度的零填充数组最有效的方法是什么?


当前回答

ES6溶液:

[...new Array(5)].map(x => 0); // [0, 0, 0, 0, 0]

其他回答

最快的方法是使用forEach=)

(我们保持IE<9的向后兼容性)

var fillArray = Array.prototype.forEach
    ? function(arr, n) {
         arr.forEach(function(_, index) { arr[index] = n; });
         return arr;
      }
    : function(arr, n) {
         var len = arr.length;
         arr.length = 0;
         while(len--) arr.push(n);
         return arr;
      };

// test
fillArray([1,2,3], 'X'); // => ['X', 'X', 'X']
function makeArrayOf(value, length) {
  var arr = [], i = length;
  while (i--) {
    arr[i] = value;
  }
  return arr;
}

makeArrayOf(0, 5); // [0, 0, 0, 0, 0]

makeArrayOf('x', 3); // ['x', 'x', 'x']

注意while通常比in、forEach等更有效。

这里还有一个不错的选择http://www.2ality.com/2013/11/initializing-arrays.html

function fillArrayWithNumbers(n) {
  var arr = Array.apply(null, Array(n));
  return arr.map(function (x, i) { return i });
}

创建全新阵列

new Array(arrayLength).fill(0);

在现有阵列的末尾添加一些值

[…existingArray,…new Array(numberOfElementsToAdd).fill(0)]

实例

//**创建全新阵列**console.log(新数组(5).fill(0));//**在现有阵列的末尾添加一些值**让existingArray=[1,2,3]console.log([…existingArray,…new Array(5).fill(0)]);

var str = "0000000...0000";
var arr = str.split("");

表达式中的用法:arr[i]*1;

编辑:如果arr应该在整数表达式中使用,那么请不要介意字符值“0”。您只需按如下方式使用它:a=a*arr[i](假设a具有整数值)。