En jQuery, las funciones map
y each
parecen hacer lo mismo. ¿Hay alguna diferencia práctica entre los dos? ¿Cuándo elegirías usar uno en lugar del otro?
javascript
jquery
dthrasher
fuente
fuente
Respuestas:
El
each
método está destinado a ser un iterador inmutable, donde elmap
método puede usarse como un iterador, pero en realidad está destinado a manipular la matriz suministrada y devolver una nueva matriz.Otra cosa importante a tener en cuenta es que la
each
función devuelve la matriz original, mientras que lamap
función devuelve una nueva matriz. Si usa en exceso el valor de retorno de la función de mapa, puede desperdiciar mucha memoria.Por ejemplo:
También puede usar la función de mapa para eliminar un elemento de una matriz. Por ejemplo:
También notará que
this
no está asignado en lamap
función. Tendrá que proporcionar el primer parámetro en la devolución de llamada (p. Ej., Usamosi
anteriormente). Irónicamente, los argumentos de devolución de llamada utilizados en cada método son el reverso de los argumentos de devolución de llamada en la función de mapa, así que tenga cuidado.fuente
return false;
1: Los argumentos de las funciones de devolución de llamada se invierten.
.each()
La función de devolución de llamada 's,$.each()
' s y.map()
's toma primero el índice y luego el elemento$.map()
La devolución de llamada tiene los mismos argumentos, pero se invierte2:
.each()
,$.each()
y.map()
hacer algo especial conthis
each()
llama a la función de tal manera quethis
apunta al elemento actual. En la mayoría de los casos, ni siquiera necesita los dos argumentos en la función de devolución de llamada.Para
$.map()
lathis
variable se refiere al objeto de ventana global.3:
map()
hace algo especial con el valor de retorno de la devolución de llamadamap()
llama a la función en cada elemento y almacena el resultado en una nueva matriz, que devuelve. Por lo general, solo necesita usar el primer argumento en la función de devolución de llamada.fuente
function shout() { alert(this + '!') } result = $.each(['lions', 'tigers', 'bears'], shout)
¡producir un resultado incorrecto contradice su respuesta! jsfiddle.net/9zy2pLevresult === ['lions', 'tigers', 'bears']
La
each
función itera sobre una matriz, llama a la función suministrada una vez por elemento y establecethis
el elemento activo. Esta:alertará a
5..
continuación,4..
a continuación,3..
a continuación,2..
a continuación,1..
Map, por otro lado, toma una matriz y devuelve una nueva matriz con cada elemento modificado por la función. Esta:
daría lugar a s ser
[25, 16, 9, 4, 1]
.fuente
Lo entendí por esto :
entonces, " cada " función devuelve la matriz original mientras que la función " mapa " devuelve una nueva matriz
fuente
fuente
Jquery.map tiene más sentido cuando está trabajando en matrices, ya que funciona muy bien con matrices.
Jquery.each se utiliza mejor cuando se itera por los elementos del selector. Lo cual se evidencia en que la función de mapa no utiliza un selector.
Como puede ver, el mapa no está diseñado para usarse con selectores.
fuente