在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;
};

当前回答

也可以作为一行语句使用:

function repeat(arr, len) {
    while (arr.length < len) arr = arr.concat(arr.slice(0, len-arr.length));
    return arr;
}

其他回答

如果你需要多次重复一个数组:

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']

受到这个答案的启发

也可以作为一行语句使用:

function repeat(arr, len) {
    while (arr.length < len) arr = arr.concat(arr.slice(0, len-arr.length));
    return arr;
}

试试这个:

"avinash ".repeat(5).trim().split(" ");

改进了Vivek的答案,这适用于任何长度的字符串,填充一个长度为n的数组:array (n+1)。Join('[要重复的字符串][separator]').split('[separator]')。片(0,n)

如果你正在使用一个多功能带,如lodash/下划线,你可以这样做:)

let result = _.map(_.times(foo), function() {return bar})