一尘不染

创建具有相同元素多次重复的数组

javascript

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

阅读 552

收藏
2020-05-01

共1个答案

一尘不染

您可以这样做:

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;
}
2020-05-01