【问题标题】:jQuery .each() vs. .map() without returnjQuery .each() 与 .map() 没有返回
【发布时间】:2014-04-26 11:51:38
【问题描述】:

.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;
});

【问题讨论】:

  • 这样使用没有区别,都是迭代,速度差异可以忽略不计,但是$.map是用来映射的。
  • .map 由于处理新数组和(不存在的)返回值,可能会有一点开销。如果您不想映射任何东西,就没有理由使用它。

标签: javascript jquery map each


【解决方案1】:

查看jQuery map vs. eachhttps://learn.jquery.com/using-jquery-core/iterating/

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

【讨论】:

  • 这可以改进,所以它不仅仅是几个链接
【解决方案2】:

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

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

两者都适用于普通迭代,但我认为如果你只是在进行迭代,如果你使用 .each(),你的代码的意图会更清晰,因为这是它的预期和唯一目的。

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

【讨论】:

  • 是的,我就是这么想的。我其实是在看别人的代码,到处都在用map,没有返回值。
  • 如果你看 jquery 核心:$.map 返回一个数组。 $.each 将对象返回给方法链。
猜你喜欢
  • 1970-01-01
  • 2011-07-12
  • 2020-09-18
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
相关资源
最近更新 更多