将数组连接到自身以便复制它

时间:2014-02-06 08:01:03

标签: javascript arrays

Python

>>> [1,2,3,4] * 2 
[1, 2, 3, 4, 1, 2, 3, 4]

使用JavaScript的方法是什么?

目前正在使用:

var data = [1,2,3,4];
data.concat(data);
//[1, 2, 3, 4, 1, 2, 3, 4]

3 个答案:

答案 0 :(得分:3)

你无法在JavaScript中增加数组。您使用Array.concat的当前解决方案是正确的。 请注意,它会使用复制的项目创建单独的数组,并且不会更改原始数据。

答案 1 :(得分:2)

对于任意N,array * N可以像这样写出

[].concat.apply([], Array.apply(0, Array(N)).map(function() { return data }))

当然,与python版本相比,这很糟糕,但它是最好的javascript可以做到的。如果您正在寻找更好的语法,请尝试使用coffeescript。

答案 2 :(得分:0)

在ECMAScript 6中,您可以使用Array.prototype.fill

[].concat.apply([], Array(N).fill(array));

可以使用spread operator简化:

[].concat(...Array(N).fill(array));

但请注意,与fill不同,展开运算符无法进行多边形填充。