用同一个元素重复多次创建一个数组

625

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

4
可能重复:https://dev59.com/hnM_5IYBdhLWcg3wn0vT - Larry Battle
25个回答

2
改进Vivek的答案,使其适用于任意长度的字符串,以填充长度为n的数组:Array(n+1).join('[要重复的字符串][分隔符]').split('[分隔符]').slice(0, n)

2

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


请在Stack Overflow上不要简单地转储代码片段。每个答案都应包含一些简明的英文解释,旨在教育和赋予未来的读者能力。它是如何工作的?与此臃肿页面上的其他技术相比,它有什么优势?是否存在一些特殊情况,不建议使用这个代码片段? - undefined

0
如果您正在使用像lodash/underscore这样的实用工具包,您可以这样做 :)
let result = _.map(_.times(foo), function() {return bar})

0

也可以作为一行代码使用:

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

-1

这可能是另一个答案。

let cards = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"];

let totalCards = [...cards, ...cards, ...cards, ...cards];


这个回答怎么解决了提出的问题呢?所以,你的建议是,如果提问者想要在一个数组中出现4次某个值,他们应该声明[value, value, value, value]吗?对于这个任务来说,这种方法并不够优雅和可扩展。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接