在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 finalAry = [...“2”.repeat(5).split(“”)].map(Number); console.log(finalary);

其他回答

这个函数创建一个长度为(length)的元素数组,只要(value)为整数或整数字符串,每个元素都等于(value)。任何十进制数都将被截断。如果你想要小数,用"parseFloat("替换"parseInt("

function fillArray(length, intValue) {
     var vals = (new Array(length + 1)).join(intValue + '|').split('|').slice(0,length);
     for(var i = 0; i < length; i += 1) {
         vals[i] = parseInt(vals[i]);
     }
     return vals;
}

例子:

fillArray(5, 7) // returns [7,7,7,7,7]
fillArray(5, 7.5) // returns [7,7,7,7,7]
fillArray(5, 200) // returns [200,200,200,200,200]

在Node.js的REPL中:

> Array.from({length:5}).map(x => 2)
[ 2, 2, 2, 2, 2 ]

var finalAry = [...“2”.repeat(5).split(“”)].map(Number); console.log(finalary);

在洛达什,情况没那么糟:

_.flatten(_.times(5, function () { return [2]; }));
// [2, 2, 2, 2, 2]

编辑:更好的是:

_.times(5, _.constant(2));
// [2, 2, 2, 2, 2]

编辑:更好的是:

_.fill(Array(5), 2);

没有更简单的方法了。您需要创建一个循环并将元素推入数组。