In jQuery scheinen die Funktionen map
und each
dasselbe zu tun. Gibt es praktische Unterschiede zwischen den beiden? Wann würden Sie eine anstelle der anderen verwenden?
javascript
jquery
dthrasher
quelle
quelle
Antworten:
Die
each
Methode soll ein unveränderlicher Iterator sein, wobei diemap
Methode als Iterator verwendet werden kann, aber tatsächlich das bereitgestellte Array manipulieren und ein neues Array zurückgeben soll.Ein weiterer wichtiger Punkt ist, dass die
each
Funktion das ursprüngliche Arraymap
zurückgibt, während die Funktion ein neues Array zurückgibt. Wenn Sie den Rückgabewert der Kartenfunktion überbeanspruchen, können Sie möglicherweise viel Speicher verschwenden.Beispielsweise:
Sie können auch die Kartenfunktion verwenden, um ein Element aus einem Array zu entfernen. Beispielsweise:
Sie werden auch feststellen, dass das
this
in dermap
Funktion nicht zugeordnet ist. Sie müssen den ersten Parameter im Rückruf angeben (z. B.i
oben verwendet). Ironischerweise sind die in jeder Methode verwendeten Rückrufargumente die Umkehrung der Rückrufargumente in der Zuordnungsfunktion. Seien Sie also vorsichtig.quelle
return false;
1: Die Argumente für die Rückruffunktionen sind umgekehrt.
.each()
Die Rückruffunktion von 's,$.each()
' s und.map()
'nimmt zuerst den Index und dann das Element$.map()
Der Rückruf hat die gleichen Argumente, ist jedoch umgekehrt2:
.each()
,$.each()
und.map()
tun etwas , das mitthis
each()
ruft die Funktion so auf, dass siethis
auf das aktuelle Element verweist. In den meisten Fällen benötigen Sie nicht einmal die beiden Argumente in der Rückruffunktion.Denn
$.map()
diethis
Variable bezieht sich auf das globale Fensterobjekt.3:
map()
macht etwas Besonderes mit dem Rückgabewert des Rückrufsmap()
Ruft die Funktion für jedes Element auf und speichert das Ergebnis in einem neuen Array, das zurückgegeben wird. Normalerweise müssen Sie nur das erste Argument in der Rückruffunktion verwenden.quelle
function shout() { alert(this + '!') } result = $.each(['lions', 'tigers', 'bears'], shout)
Ein falsches Ergebnis zu erzielen, widerspricht Ihrer Antwort !! jsfiddle.net/9zy2pLevresult === ['lions', 'tigers', 'bears']
Die
each
Funktion durchläuft ein Array, ruft die angegebene Funktion einmal pro Element auf und setztthis
auf das aktive Element. Dies:wird
5..
dann4..
dann3..
dann2..
dann alarmieren1..
Map hingegen nimmt ein Array und gibt ein neues Array zurück, wobei jedes Element von der Funktion geändert wird. Dies:
würde dazu führen, dass es so ist
[25, 16, 9, 4, 1]
.quelle
Ich habe es so verstanden :
Daher gibt " jede " Funktion das ursprüngliche Array zurück, während " Map " -Funktion ein neues Array zurückgibt
quelle
quelle
Jquery.map ist sinnvoller, wenn Sie an Arrays arbeiten, da es mit Arrays sehr gut funktioniert.
Jquery.each wird am besten verwendet, wenn Sie Auswahlelemente durchlaufen. Dies zeigt sich darin, dass die Kartenfunktion keinen Selektor verwendet.
Wie Sie sehen können, ist die Karte nicht für die Verwendung mit Selektoren vorgesehen.
quelle