配列の初期化を書くときに、値が未代入の配列にmap
メソッドを使おうとして、
Array(3).map(e => 0);
みたいなものを書いても思ったとおり動作しないですよね。Array.prototype.map()
は値を代入されていない要素をスキップするので。
なので、通常は、
[...Array(3)].map(e => 0);
Array.from(Array(3)).map(e => 0);
のように、配列を再度生成するかと思います。
ところで、TypedArray.prototype.map()
はこのスキップ処理をしないので、
new Int8Array(3).map(e => 0);
これは普通に動きますから、配列の要素が数値であると決まっているならTypedArray
を使った方がいい場面も多いかもですね。
StringArrayの登場が待たれます。
なお、MDNには、
callback関数は値を割り当てたtyped arrayのインデックスに対してのみ呼び出されます。すなわち、undefined値である場合や、削除された場合や、値が割り当てられていない場合のインデックスに対しては呼び出されません。
TypedArray.prototype.map() - JavaScript | MDN
と、このスキップ処理をするように書かれていますが、仕様を見る限りこれは誤記かと思います。