JavaScript で0で埋まったn個の配列を作りたい時にどうするかの話です。
n個の配列は次のコードで作成可能です。
var n_length_array = new Array( n ); |
あるいは
var n_length_array = []; n_length_array.length = n; |
要素がundefined
な配列は作成可能です。
元ネタは stackoverflow の古い質問です。
Most efficient way to create a zero filled JavaScript array?
いくつかのコードが紹介されています。
Array.apply(null, new Array(5)).map(Number.prototype.valueOf,0); // [0, 0, 0, 0, 0] Array.apply(null, new Array(3)).map(String.prototype.valueOf,"hi") // ["hi", "hi", "hi"] new Array(5+1).join('0').split('') // ["0", "0", "0", "0", "0"] new Array(5+1).join('0').split('').map(parseFloat) // [0, 0, 0, 0, 0] |
Array.apply 使うんや〜
join, split のこんな使い方あるんか〜
と感心してたら、「いやいや、それ遅いし」と指摘してる方がいらっしゃいました。
テストコードを見ることができます。
http://jsperf.com/zerofill-2d-array
for ループさせた方が早いらしいです。
1回だけの生成だと、そんなに目くじら立てなくても、とも思います。
大量に生成を繰り返す時には注意しなくてはと心に刻みました。
2014.06.25 13:51
0で埋めたい場合はTypedArray一択です
2014.06.25 14:11
対応しているブラウザではその通りだと思います
2014.06.27 18:30
型付き配列が使えないブラウザと言ったらIE9くらいでは?
型付き配列が使えなければBlobも使えないし、つまりHTML5の様々なAPI、なんとXHR2すらもまともに対応していないということで、そのようなブラウザはJSをOFFにしていると人と同じグループに入れて考えた方が合理的で楽かと思います。