В JQuery, то map
и each
функции , кажется, делают то же самое. Есть ли практические различия между ними? Когда вы решите использовать один вместо другого?
javascript
jquery
dthrasher
источник
источник
Ответы:
Предполагается, что
each
метод является неизменным итератором, аmap
метод может использоваться как итератор, но на самом деле предназначен для манипулирования предоставленным массивом и возврата нового массива.Еще одна важная вещь, которую стоит отметить, -
each
функция возвращает исходный массив, аmap
функция возвращает новый массив. Если вы чрезмерно используете возвращаемое значение функции map, вы можете потратить много памяти.Например:
Вы также можете использовать функцию карты, чтобы удалить элемент из массива. Например:
Вы также заметите, что функция
this
не отображается вmap
функции. Вы должны будете предоставить первый параметр в обратном вызове (например, мы использовалиi
выше). По иронии судьбы, аргументы обратного вызова, используемые в каждом методе, являются обратными аргументам обратного вызова в функции map, поэтому будьте осторожны.источник
return false;
1: аргументы к функциям обратного вызова обращены.
.each()
Функция обратного вызова s,$.each()
s и.map()
s сначала берет индекс, а затем элемент$.map()
Обратный вызов имеет те же аргументы, но обратный2:
.each()
,$.each()
и.map()
сделать что - то особенное сthis
each()
вызывает функцию таким образом, чтоthis
указывает на текущий элемент. В большинстве случаев вам даже не нужны два аргумента в функции обратного вызова.Для получения
$.map()
вthis
переменном относится к глобальному объекту окна.3:
map()
делает что-то особенное с возвращаемым значением обратного вызоваmap()
вызывает функцию для каждого элемента и сохраняет результат в новом массиве, который он возвращает. Обычно вам нужно использовать только первый аргумент в функции обратного вызова.источник
function shout() { alert(this + '!') } result = $.each(['lions', 'tigers', 'bears'], shout)
неправильный результат противоречит вашему ответу !! jsfiddle.net/9zy2pLevresult === ['lions', 'tigers', 'bears']
В
each
функции перебирает массив, требующий прилагаемые функции один раза на каждый элемент, а также настройкуthis
к активному элементу. Это:будет предупреждать
5..
то4..
потом3..
то2..
потом1..
Map, с другой стороны, принимает массив и возвращает новый массив с каждым элементом, измененным функцией. Это:
приведет к тому, чтобы быть
[25, 16, 9, 4, 1]
.источник
я понял это по этому :
Итак, функция « каждая » возвращает исходный массив, а функция « Карта » возвращает новый массив
источник
источник
Jquery.map имеет больше смысла, когда вы работаете с массивами, поскольку он очень хорошо работает с массивами.
Jquery.each лучше всего использовать при переборе элементов селектора. Что подтверждается тем, что функция карты не использует селектор.
Как видите, карта не предназначена для использования с селекторами.
источник