jQuery .each()与.map()无需返回

时间:2014-03-19 22:18:27

标签: javascript jquery map each

当没有返回值时,.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;
});

2 个答案:

答案 0 :(得分:14)

.map()旨在迭代并创建一个新的结果数组。

.each()被设计为迭代器(没有创建新数组)。

任何一个都可以用于普通迭代,但是如果你使用.each()进行迭代,我会认为代码的意图更清晰,因为这是它的预期和唯一用途。

至于除了创建数组之外的功能差异,jQuery' .each()允许您通过从回调中返回false来终止迭代。 jQuery' s .map()没有办法终止迭代。

答案 1 :(得分:3)

结帐jQuery map vs. eachhttps://learn.jquery.com/using-jquery-core/iterating/

总之,这取决于你想做什么。 $.each()使用相同的数组,而$.map()返回一个新数组。传递参数的顺序在$.map()中相反,以匹配ECMAScript 5中可用的本机.map()方法的顺序。它不是关于如何遍历数组/对象的全部,而是以及如何修改原始数组/对象。加号为$.each(),您可以使用函数中的关键字this来引用数组/对象的当前元素。