1. ホーム
  2. javascript

[解決済み] 同じ要素を複数回繰り返した配列を作成する

2022-03-20 18:46:51

質問

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

繰り返しごとに配列が2倍になるので、少ない繰り返しで非常に大きな配列を作ることができます。


注意:また、この関数を改良するために push の代わりに concat というように concat は反復するたびに新しい配列を作成します。このように(配列の扱い方の例として示しただけです)。

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