JQuery.each() vs..map() без возврата
Есть ли разница между .each() и .map(), когда не возвращается значение? Есть ли какая-либо польза от использования того или другого в этом случае?
myList.map(function(myModel, myIndex){
myModel.itemOne = itemOne;
myModel.itemTwo = itemTwo;
myModel.itemThree = itemThree;
});
myList.each(function(myModel, myIndex){
myModel.itemOne = itemOne;
myModel.itemTwo = itemTwo;
myModel.itemThree = itemThree;
});
Ответы
Ответ 1
.map()
предназначен для итерации и создания нового результирующего массива.
.each()
предназначен для итератора (новый массив не создан).
Либо будет работать для простой итерации, хотя я бы сказал, что цель вашего кода более ясна, если вы просто выполняете итерацию, если используете .each()
, поскольку это его цель и единственная цель.
Что касается функциональных различий, кроме создания массива, jQuery .each()
позволяет завершить итерацию, возвращая false
из обратного вызова. jQuery .map()
не имеет возможности прервать итерацию.
Ответ 2
Проверьте карту jQuery против каждого и https://learn.jquery.com/using-jquery-core/iterating/
Таким образом, это зависит от того, что вы хотите сделать. $.each()
использует тот же массив, тогда как $.map()
возвращает новый. Порядок передаваемого аргумента в $.map()
меняется на противоположный порядку для собственного метода .map()
доступного в ECMAScript 5. Это не все о том, как вы выполняете итерации по массивам/объектам, но если и как исходный массив/объект изменен. $.each()
является то, что с $.each()
вы можете использовать ключевое слово this
в функции для ссылки на текущий элемент массива/объекта.