以下の内容はhttps://takuya-1st.hatenablog.jp/entry/2015/11/28/035522より取得しました。


Array(10) がundefined になる問題。

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っぽいものも - それマグで!

参考資料

JavaScript - new Array(len)と[undefined, ...]の違い - Qiita




以上の内容はhttps://takuya-1st.hatenablog.jp/entry/2015/11/28/035522より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14