在Python中,[2]是一个列表,以下代码给出以下输出:
[2] * 5 # Outputs: [2,2,2,2,2]
是否存在一种简单的方法来做到这一点与JavaScript数组?
我写了下面的函数来实现它,但是有没有更短或更好的函数呢?
var repeatelem = function(elem, n){
// returns an array with element elem repeated n times.
var arr = [];
for (var i = 0; i <= n; i++) {
arr = arr.concat(elem);
};
return arr;
};
你可以试试:
Array(6).join('a').split(''); // returns ['a','a','a','a','a'] (5 times)
更新(01/06/2018):
现在你可以有一组重复的字符。
new Array(5).fill('a'); // give the same result as above;
// or
Array.from({ length: 5 }).fill('a')
注意:查看更多关于fill(…)和from(…)的兼容性和浏览器支持。
更新(05/11/2019):
另一种方法,不使用fill或from,适用于任何长度的字符串:
Array.apply(null, Array(3)).map(_ => 'abc') // ['abc', 'abc', 'abc']
同上面的答案。为了完整而添加。
如果你需要多次重复一个数组:
var arrayA = ['a','b','c'];
var repeats = 3;
var arrayB = Array.apply(null, {length: repeats * arrayA.length})
.map(function(e,i){return arrayA[i % arrayA.length]});
// result: arrayB = ['a','b','c','a','b','c','a','b','c']
受到这个答案的启发