1. ホーム
  2. javascript

[解決済み] 単一の値による配列の初期化

2022-03-03 14:12:05

質問

このような初期化をもっとコンパクトに行う方法はないのでしょうか?

for (var i = 0; i < arraySize; i++) array[i] = value;

解決方法は?

while(arraySize--) array.push(value);

初期化なし(私の知る限り)


更新情報

4年前にこの回答を投稿して以来、この回答を求めて何度も足を運ぶ人がいるようです。ベンチマークのために、私は JSPerf を、いくつかの異なる解決策とともに紹介します。

この上の解決策は、短いですが、最速ではありません。同じように短いスタイルにこだわりつつ、より良いパフォーマンスを発揮するために。

while(size--) array[size] = value;


2016年2月更新 JSPerfをより多くのテストケースを含む新しいリビジョンで更新しました。

パフォーマンスが重要でなく、ワンライナーで済ませたい場合。

var value = 1234, // can be replaced by a fixed value
    size  = 1000, // can be replaced by a fixed value
    array = Array.apply(null,{length: size}).map(function() { return value; });

よりパフォーマンスの高いソリューション(1行でダーティに)。 注意:これはスコープ内に存在するvalue, size, i変数を置き換えるものです。

for(var i = 0, value = 1234, size = 1000, array = new Array(1000); i < size; i++) array[i] = value;