Подтвердить что ты не робот

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;
});
4b9b3361

Ответ 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 в функции для ссылки на текущий элемент массива/объекта.