2014-02-06 24 views
2

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] 
+1

我不確定你的問題是什麼。你問什麼是最佳做法? – Gohn67

+0

@Ofiris請澄清你的問題。 –

+0

@ Gohn67,是的,想知道是否要走,或者有更令人愉快的語法,比如'Python'。 – Ofiris

回答

3

在JavaScript中你不能乘陣列。您使用Array.concat的當前解決方案是正確的。 請注意,它會使用複製的項目創建單獨的陣列,並且不會更改原始項目。

2

對於任意的N,array * N可以這樣寫

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

當然,這很爛相比Python版本,但它是最好的JavaScript可以做到。如果您正在尋找更好的語法,請嘗試coffeescript。

0

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

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

它可以通過spread operator被簡化:

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

但是,請注意,不像fill,傳播經營者不能polyfilled 。