Bei Verwendung der Chrome-Konsole ist dies meine Eingabe und Ausgabe:
[0].map(Array);
[[0, 0, [0]]]; // output
Was passiert hier?
BEARBEITEN
Der Grund, warum mich das neugierig macht, ist so etwas
[0].map(String);
Wird zurückkehren
["0"];
Und nicht
["0", "0", "String"]
javascript
Jacksonkr
quelle
quelle
['10', '10', '10'].map(parseInt)
.map()
Verhalten: stackoverflow.com/questions/14528397/… Im Allgemeinen müssen Sie vorsichtig sein, wenn Sie.map()
Funktionen verwenden, die mehr als ein Argument enthalten.[0].map(console.log)
Antworten:
Die
.map()
Funktion ruft dieArray()
Funktion mit drei Argumenten auf, dem Wert des Array-Elements0
, dem Index dieses Elements0
und einem Verweis auf das gesamte Array.Also ist es so:
Das bis dahin zurückgegebene Array
Array()
wird zum ersten Element des Arrays, das.map()
erstellt wird, daher die zusätzliche Verschachtelungsebene in Ihrem[[0, 0, [0]]]
Ergebnis.BEARBEITEN bezüglich Ihrer Bearbeitung: Wenn Sie sagen,
[0].map(String);
dass dies dazu führt,String()
dass mit denselben drei Argumenten wie aufgerufenString(a[index], index, a)
wird, dieString()
Funktion jedoch alle bis auf das erste Argument ignoriert, währendArray()
alle angegebenen Argumente verwendet werden.quelle
Erstens ,
Array
als Funktion verwendet werden könnten Arrays zu erstellen:Zweitens werden
map
drei Parameter an den Rückruf übergeben: das Element, sein Index aus dem Array und das Array selbst.Also , da Ihr Array enthält ein Element, die Zeile:
ist äquivalent zu:
quelle
Nachdem Sie die Frage aktualisiert haben. Andere Antworten geben Ihnen Informationen über die Karte
Um zu beantworten, warum sich Array und String unterscheiden, wenden Sie sich an Konstruktoren
String-Konstruktor akzeptiert 1 Parameter String (Ding), während Array neues Array (Element0, Element1 [, ... [, ElementN]])
quelle
.map(Number)
jeder Artikel in eine Zahl umgewandelt wird, anstatt[3, 2, [4, 1, 3]]
für jeden Artikel so etwas zurückzugeben.Dieser Anruf
gibt Ihnen das gleiche Ergebnis, als ob Sie so etwas geschrieben hätten:
Die Map- Funktion ruft die Array- Funktion mit drei Parametern auf: Wert des Elements, Index des Elements und gesamtes Array. Dieser Aufruf
Array
gibt Ihnen ein Array mit 3 Elementen zurück: Wert (Nummer0
), Index (Nummer0
), ganzes Array ([0]
).Und dieses neue Array wird in das ursprüngliche Array eingeschlossen, da Sie das ursprüngliche Element (Nummer
0
) einem neuen Element (Array mit 3 Elementen) zugeordnet haben.Hinweis: Möglicherweise sind Sie es gewohnt, nur den ersten Parameter wie in zu verwenden
oder verwenden Sie nur zwei, um auch Index zu erhalten
Sie müssen sich jedoch daran erinnern, dass es
map
immer noch 3 Parameter gibt, die Sie in Ihrer Rückruffunktion einfach ignorieren. Das ist auch der Grund, warum Code wie:kehrt zurück
Es ist weil String Funktion nur um den ersten Parameter kümmert und andere übergebene Parameter ignoriert. Wenn Sie anrufen
du wirst immer noch bekommen
quelle