2016-04-02 28 views
0

最初の例で配列にデフォルト値が設定されないのはなぜか分かりますか?javascript - 配列にデフォルト値を設定する方法

// first example 
var arr = new Array(5); 
var r = arr.map(function() { return 0; }); 
console.log(r); // [] 

// second example 
var arr2 = Array.apply(null, Array(5)); 
var r2 = arr2.map(function() { return 0; }); 
console.log(r2); // [0, 0, 0, 0, 0] 
+2

空のスロットを除いて、最初の配列には何もないので、 'map'はそれらのスロットでは動作しません。 2番目は 'undefined'要素の配列です。 – Andy

+1

これはすべてのプログラミング言語で有効です。配列をインスタンス化すると、値のない空のスロットが作成されます。 –

答えて

1

これは、MDNの記事Array.protoype.mapで見つけたものです。

配列の要素が欠落している(つまり、設定されていない、削除されている、または値が割り当てられていない)インデックスは呼び出されません。

Arrayコンストラクタを使用して配列を初期化すると、配列要素は設定されません。

new Array(5)の方が良い方法はArray.from({length: 5})で、これはmapで正常に動作します。

関連する問題