Dans jQuery, les fonctions map
et each
semblent faire la même chose. Y a-t-il des différences pratiques entre les deux? Quand choisiriez-vous d'utiliser l'un au lieu de l'autre?
javascript
jquery
dthrasher
la source
la source
Réponses:
La
each
méthode est censée être un itérateur immuable, alors que lamap
méthode peut être utilisée comme itérateur, mais est vraiment destinée à manipuler le tableau fourni et à renvoyer un nouveau tableau.Une autre chose importante à noter est que la
each
fonction renvoie le tableau d'origine tandis que lamap
fonction renvoie un nouveau tableau. Si vous abusez de la valeur de retour de la fonction de carte, vous pouvez potentiellement gaspiller beaucoup de mémoire.Par exemple:
Vous pouvez également utiliser la fonction de carte pour supprimer un élément d'un tableau. Par exemple:
Vous remarquerez également que le
this
n'est pas mappé dans lamap
fonction. Vous devrez fournir le premier paramètre dans le rappel (par exemple, nous l'avons utiliséi
ci-dessus). Ironiquement, les arguments de rappel utilisés dans la méthode each sont l'inverse des arguments de rappel dans la fonction map, alors soyez prudent.la source
return false;
1: Les arguments des fonctions de rappel sont inversés.
.each()
Les fonctions de rappel de 's,$.each()
' s et.map()
'prennent d'abord l'index, puis l'élément$.map()
Le rappel de 'a les mêmes arguments, mais inversé2:
.each()
,$.each()
et.map()
faire quelque chose de spécial avecthis
each()
appelle la fonction d'une manière quithis
pointe vers l'élément courant. Dans la plupart des cas, vous n'avez même pas besoin des deux arguments dans la fonction de rappel.Car
$.map()
lathis
variable fait référence à l'objet de fenêtre globale.3:
map()
fait quelque chose de spécial avec la valeur de retour du rappelmap()
appelle la fonction sur chaque élément et stocke le résultat dans un nouveau tableau, qu'il renvoie. Vous n'avez généralement besoin d'utiliser que le premier argument de la fonction de rappel.la source
function shout() { alert(this + '!') } result = $.each(['lions', 'tigers', 'bears'], shout)
produire un mauvais résultat, cela contredit votre réponse !! jsfiddle.net/9zy2pLevresult === ['lions', 'tigers', 'bears']
La
each
fonction parcourt un tableau, appelant la fonction fournie une fois par élément et définissantthis
l'élément actif. Ce:alertera
5..
alors4..
puis3..
puis2..
alors1..
La carte d'autre part prend un tableau et renvoie un nouveau tableau avec chaque élément modifié par la fonction. Ce:
entraînerait s être
[25, 16, 9, 4, 1]
.la source
je l'ai compris par ceci :
donc, " chaque " fonction retourne le tableau d'origine tandis que " carte " fonction retourne un nouveau tableau
la source
la source
Jquery.map est plus logique lorsque vous travaillez sur des tableaux car il fonctionne très bien avec les tableaux.
Jquery.each est mieux utilisé lors de l'itération des éléments de sélection. Ce qui est démontré par le fait que la fonction de carte n'utilise pas de sélecteur.
comme vous pouvez le voir, la carte n'est pas destinée à être utilisée avec des sélecteurs.
la source