在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;
};
我有问题与提到的方法,当我使用数组像
var array = ['foo', 'bar', 'foobar'];
var filled = array.fill(7);
//filled should be ['foo', 'bar', 'foobar', 'foo', 'bar', 'foobar', 'foo']
为了得到这个,我使用:
Array.prototype.fill = function(val){
var l = this.length;
if(l < val){
for(var i = val-1-l; i >= 0; i--){
this[i+l] = this[i % l];
}
}
return this;
};
在洛达什,情况没那么糟:
_.flatten(_.times(5, function () { return [2]; }));
// [2, 2, 2, 2, 2]
编辑:更好的是:
_.times(5, _.constant(2));
// [2, 2, 2, 2, 2]
编辑:更好的是:
_.fill(Array(5), 2);