Ich möchte ein leeres Array mit fester Länge erstellen und dann darauf verwenden, um ein neues Array zurückzugeben. Es funktioniert jedoch nicht wie erwartet.Array-Konstruktor funktioniert nicht wie erwartet
Nach mdn docs:
Wenn das einzige Argument für den Konstruktor übergeben Array eine ganze Zahl zwischen 0 und 232-1 (einschließlich), gibt diese ein neues JavaScript-Array mit der Länge auf diese Zahl gesetzt.
new Array(3)
kehrt [undefined × 3]
. Sollte es nicht sein: [undefined, undefined, undefined]
?
Lassen Sie uns folgende Beispiele betrachten:
1) Problem.
var a = new Array(3);
a.map((x, i) => i); // [undefined × 3]
2) Arbeiten.
var a = Array.apply(null, new Array(3));
a.map((x, i) => i); // [0, 1, 2]
Ich habe dies auf der neuesten Google Chrome Canary getestet.
Ok, ich dachte zuerst das war Wahnsinn, aber ich kann Chrome 47.0.2526.106 m Ausgänge '[undefined × 3]' – Jonathan
'Array [<3 leere Steckplätze>]' in Firefox bestätigen. Je mehr du weisst. –
'neues Array (3)' erstellt kein Array mit Elementen, es ist nur ein Dummy – CoderPi