2017-05-28 6 views
2

X長のインデックス付きオブジェクトを構築しようと、私は次のコードが機能していない気づいたが、それがない理由私が取得することはできません。初期化されたX長の配列を減らすのがなぜ効果がありませんか?

Array(X).reduce((acc, curr, index) => { 
    console.log(acc, curr, index); 
    return acc; 
}, {}); 
// => Object {} 

インナーconsole.logは、すべての値を印刷する必要があります反復(X回)ですが、呼び出されることはないようですが、その結果の値は、reduceメソッドにパラメータとして渡されたinitialValueです。

誰も私の減速機が呼び出されていない理由を説明できますか?

答えて

2

実際に配列が空であるため呼び出されません。

Arrayコンストラクタに渡される唯一の引数が0と232-1(含む)の整数 ある場合、これはその番号(注に設定され、その長さのプロパティを持つ新しいJavaScript配列 を返す:これは、意味しますあなたができるにarrayLength空きスロットの アレイ、実際の不定 値とないスロット)

Array(X).fill().reduce(...) 

Array.fill doc

+0

実際の未定義値**を持つスロットはここでは重要な部分です。実際には、 'Array(X).fill()。reduce(...)'は 'undefined'値で配列を塗りつぶしてから、減速機をX回呼び出します。ありがとう! – ClementParis016

関連する問題