Javascript Lodash中u.map和u.forEach的性能差异是什么?

Javascript Lodash中u.map和u.forEach的性能差异是什么?,javascript,angularjs,coffeescript,lodash,Javascript,Angularjs,Coffeescript,Lodash,在lodash中滚动浏览u.map和u.forEach列表的最佳方式是什么? 我不需要返回值,但我只在循环中做一些事情 就性能而言,这两种功能的区别是什么 a = [] b = [] list = response._source.carico_scarico if angular.isDefined(list) _.forEach(list, (cs) -> if cs.qta >= 0 then a.push cs if cs.qta < 0 then

在lodash中滚动浏览u.map和u.forEach列表的最佳方式是什么? 我不需要返回值,但我只在循环中做一些事情

就性能而言,这两种功能的区别是什么

a = []
b = []
list = response._source.carico_scarico
if angular.isDefined(list)
  _.forEach(list, (cs) ->
    if cs.qta >= 0 then a.push cs
    if cs.qta < 0 then b.push cs
  )
a=[]
b=[]
列表=响应。\u source.carico\u scarico
如果定义了角度(列表)
_.forEach(列表(cs)->
如果cs.qta>=0,则a.push cs
如果cs.qta<0,则b.推cs
)

a=[]
b=[]
列表=响应。\u source.carico\u scarico
如果定义了角度(列表)
_.map(列表,(cs)->
如果cs.qta>=0,则a.push cs
如果cs.qta<0,则b.推cs
)
就性能而言,这两种功能的区别是什么

a = []
b = []
list = response._source.carico_scarico
if angular.isDefined(list)
  _.forEach(list, (cs) ->
    if cs.qta >= 0 then a.push cs
    if cs.qta < 0 then b.push cs
  )
这根本不可能有什么关系。如果您担心它的重要性,那么创建一个代表您的真实代码的测试并尝试它(可能是在上)。但是,除非你处理成千上万的条目,或者重复你的循环数十万次,否则它们之间的任何差异对现实世界的影响都可能是微不足道的。(见鬼,在现代JavaScript引擎中,数十万甚至可能不足以看出您所关心的差异。)

但是推测:由于
map
必须创建并填充一个数组以用作返回值(您将忽略该值),而
forEach
没有,因此
map
的速度会稍微慢一点



但是:这里更大的论点是为作业使用正确的工具:如果不需要返回值,请不要使用
map
。其目的是通过将值从原始对象映射到新对象来创建结果。您不希望这样,因此
map
是一个奇怪的选择,很可能会让维护代码的人绊倒。

您应该自己进行性能计算。“就性能而言”-你需要自己客观地衡量这一点,所以没有办法绝对地知道一种方法是否比另一种好?有一种方法可以绝对地了解给定用例:衡量它。