js で要素が空っぽの配列10個作ってループ変数代わりに使ってみよう
forループとかダルいよねと思って。10個ループ変数してみたら。。。
Array(10).forEach( (e)=>{ console.log(e) } ) //=> undefined
あれ?なんで?
map で初期化したら?
Array(10).map( (x)=>{return 1} ) [undefined × 10]
あれ?出来ない。
配列の長さは10だよね?
うん、配列長は指定通りなんですね、
Array(10).length //=> 10
あれ?
undefined の扱いの問題かな?
Array(10)[100] //=> undefined
Array(10) はこういうこと
Arrayの第一引数に数値を指定すると、次のような動作になってるみたい。
a = new Array() a.length = 10 a.map( (x) =>{ return 1 }); //=>[undefined × 10]
解決策
Array(10).fill(1)
あまり美しくないけど、どこでも使えるといえばこうなる。
Array.prototype とか追いかけて、深入りすると沼に嵌りそう。
関連資料
JavaScript で 100.times( alert ) するrangeっぽいものも - それマグで!