W jQuery funkcje map
i each
wydają się robić to samo. Czy są jakieś praktyczne różnice między nimi? Kiedy zdecydujesz się użyć jednego zamiast drugiego?
javascript
jquery
dthrasher
źródło
źródło
Odpowiedzi:
each
Metoda jest przeznaczona do niezmiennej iteracyjnej, w którym jakomap
sposób może być stosowany jako iteracyjnej, ale rzeczywiście przeznaczona do manipulowania dostarczonego tablicy i zwraca nową tablicę.Inną ważną rzeczą do zapamiętania jest to, że
each
funkcja zwraca oryginalną tablicę, podczas gdymap
funkcja zwraca nową tablicę. Jeśli nadużyjesz zwracanej wartości funkcji mapy, możesz potencjalnie zmarnować dużo pamięci.Na przykład:
Możesz także użyć funkcji mapy, aby usunąć element z tablicy. Na przykład:
Zauważysz również, że
this
nie jest mapowany wmap
funkcji. Będziesz musiał podać pierwszy parametr w wywołaniu zwrotnym (np. Użyliśmyi
powyżej). Jak na ironię, argumenty wywołania zwrotnego używane w każdej metodzie są odwrotnością argumentów wywołania zwrotnego w funkcji mapy, więc bądź ostrożny.źródło
return false;
1: Argumenty funkcji zwrotnych są odwrócone.
.each()
Funkcje zwrotne „,$.each()
” i.map()
„” najpierw biorą indeks, a potem element$.map()
Wywołanie zwrotne ma te same argumenty, ale jest odwrócone2:
.each()
,$.each()
, i.map()
zrobić coś specjalnego zthis
each()
wywołuje funkcję w taki sposób, żethis
wskazuje bieżący element. W większości przypadków nie potrzebujesz nawet dwóch argumentów w funkcji wywołania zwrotnego.Dla
$.map()
tejthis
zmiennej odnosi się do globalnego obiektu okna.3:
map()
robi coś specjalnego z wartością zwrotną wywołania zwrotnegomap()
wywołuje funkcję na każdym elemencie i zapisuje wynik w nowej tablicy, którą zwraca. Zwykle wystarczy użyć pierwszego argumentu w funkcji wywołania zwrotnego.źródło
function shout() { alert(this + '!') } result = $.each(['lions', 'tigers', 'bears'], shout)
błędny wynik jest sprzeczny z odpowiedzią !! jsfiddle.net/9zy2pLevresult === ['lions', 'tigers', 'bears']
W
each
iteracji funkcyjne powyżej tablicy, wywoływanie funkcji dostarczanej jednokrotnie na element i ustawieńthis
dla składnika aktywnego. To:zaalarmuje
5..
wtedy,4..
a3..
potem2..
wtedy1..
Z drugiej strony mapa pobiera tablicę i zwraca nową tablicę z każdym elementem zmienionym przez funkcję. To:
spowodowałoby bycie s
[25, 16, 9, 4, 1]
.źródło
zrozumiałem to przez to :
więc „ każda ” funkcja zwraca oryginalną tablicę, podczas gdy funkcja „ map ” zwraca nową tablicę
źródło
źródło
Jquery.map ma więcej sensu, gdy wykonujesz pracę na tablicach, ponieważ działa bardzo dobrze z tablicami.
Jquery.each najlepiej stosować podczas iteracji po elementach wyboru. Dowodzi tego fakt, że funkcja mapy nie korzysta z selektora.
jak widać, mapa nie jest przeznaczona do użycia z selektorami.
źródło