No jQuery, as funções map
e each
parecem fazer a mesma coisa. Existem diferenças práticas entre os dois? Quando você escolheria usar um em vez do outro?
javascript
jquery
dthrasher
fonte
fonte
Respostas:
O
each
método deve ser um iterador imutável, onde, como omap
método pode ser usado como um iterador, é realmente destinado a manipular a matriz fornecida e retornar uma nova matriz.Outro aspecto importante a ser observado é que a
each
função retorna a matriz original enquanto amap
função retorna uma nova matriz. Se você usar em excesso o valor de retorno da função de mapa, poderá potencialmente desperdiçar muita memória.Por exemplo:
Você também pode usar a função de mapa para remover um item de uma matriz. Por exemplo:
Você também notará que o
this
não está mapeado namap
função. Você precisará fornecer o primeiro parâmetro no retorno de chamada (por exemplo, usamosi
acima). Ironicamente, os argumentos de retorno de chamada usados em cada método são o inverso dos argumentos de retorno de chamada na função de mapa, portanto, tenha cuidado.fonte
return false;
1: Os argumentos para as funções de retorno de chamada são revertidos.
.each()
A função de retorno de chamada 's,$.each()
' e.map()
s leva primeiro o índice e, em seguida, o elemento$.map()
O retorno de chamada da empresa tem os mesmos argumentos, mas invertido2:
.each()
,,$.each()
e.map()
faça algo especial comthis
each()
chama a função de maneira quethis
aponte para o elemento atual. Na maioria dos casos, você nem precisa dos dois argumentos na função de retorno de chamada.Para
$.map()
athis
variável refere-se ao objeto de janela global.3:
map()
faz algo especial com o valor de retorno do retorno de chamadamap()
chama a função em cada elemento e armazena o resultado em uma nova matriz, que ele retorna. Geralmente, você só precisa usar o primeiro argumento na função de retorno de chamada.fonte
function shout() { alert(this + '!') } result = $.each(['lions', 'tigers', 'bears'], shout)
produzindo um resultado errado, contradiz sua resposta !! jsfiddle.net/9zy2pLevresult === ['lions', 'tigers', 'bears']
A
each
função itera sobre uma matriz, chamando a função fornecida uma vez por elemento e configurandothis
para o elemento ativo. Este:irá alertar
5..
então4..
então3..
então2..
então1..
O mapa, por outro lado, pega uma matriz e retorna uma nova matriz com cada elemento alterado pela função. Este:
resultaria em s sendo
[25, 16, 9, 4, 1]
.fonte
eu entendi com isso :
portanto, a função " each " retorna a matriz original, enquanto a função " map " retorna uma nova matriz
fonte
fonte
O Jquery.map faz mais sentido quando você está trabalhando em matrizes, pois executa muito bem com matrizes.
O Jquery.each é melhor usado ao iterar pelos itens do seletor. O que é evidenciado no fato de que a função de mapa não usa um seletor.
como você pode ver, o mapa não se destina a ser usado com seletores.
fonte