在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(3).fill(['a','b','c']).flat() 

将返回

Array(9) [ "a", "b", "c", "a", "b", "c", "a", "b", "c" ]

其他回答

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

如果需要重复一个数组,请使用下面的方法。

Array(3).fill(['a','b','c']).flat() 

将返回

Array(9) [ "a", "b", "c", "a", "b", "c", "a", "b", "c" ]

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

这可能是另一个答案。

让卡=(“一个”、“2”、“3”、“4”、“5”、“6”、“7”、“8”,“9”,“10”、“J”,“问”、“K”);

let totalCards =[…]卡,…卡,…卡,……卡);

你可以这样做:

function fillArray(value, len) {
  if (len == 0) return [];
  var a = [value];
  while (a.length * 2 <= len) a = a.concat(a);
  if (a.length < len) a = a.concat(a.slice(0, len - a.length));
  return a;
}

它在每次迭代中将数组加倍,因此它可以用很少的迭代创建一个非常大的数组。


注意:你也可以通过使用push而不是concat来改进你的函数,因为concat每次迭代都会创建一个新数组。如下所示(只是作为如何使用数组的示例):

function fillArray(value, len) {
  var arr = [];
  for (var i = 0; i < len; i++) {
    arr.push(value);
  }
  return arr;
}