JavaScript:如何将x添加到数组x次?

Tha*_*you 8 javascript arrays concat pad

我想这与数组填充类似,但我想知道它是否可以简化.

var arr = [1,2,3],
    x   = 5;

for (var i=0; i<x; i++) {
  arr.push(x);
}

console.log(arr);
//=> [1, 2, 3, 5, 5, 5, 5, 5]
Run Code Online (Sandbox Code Playgroud)

有没有办法在不使用for循环的情况下执行此操作?


更新

即使有移动器聪明的解决方案,for循环似乎是最高性能的

阵列 - 填充 -  2 关于jsperf的基准

pax*_*blo 5

除非您因编写的每一行代码而受到惩罚,否则该代码就可以了:简洁且易于理解。

如果确实受到处罚,请使用:

for (var i = 0; i < x; i++) arr.push(x);
Run Code Online (Sandbox Code Playgroud)

在一行上:-)

除此之外,您最好的选择是遵循以下功能:

arr = appendXCopiesOfX (arr, x);
Run Code Online (Sandbox Code Playgroud)

但是我认为您并没有真正获得任何收益,因为如上所述,理解这么小的循环应该没有什么问题。

总而言之,尝试改善当前的状况可能会浪费时间和精力。


xda*_*azz 5

没有for循环:

var arr = [1,2,3], x   = 5;
arr = arr.concat(Array.apply(null, Array(x)).map(function() { return x; }));

// or even
arr = arr.concat(Array.apply(null, Array(x)).map(x.valueOf, x));
Run Code Online (Sandbox Code Playgroud)

  • 我的天啊!我真的可以这么说:-) (2认同)