_.each vs _.map 有什么区别?

_.each vs _.map what is the difference?

我试图打印列表中的所有动物。我尝试使用 _.each 并且效果很好。但是当我使用 _.map 时,它们有相同的结果。

代码:

animals = [ "dog","cat","pig" ]

使用 _.map:

_.map animals, (animal)->
    console.log " " + animal

    //result: dog cat pig

使用 _.each:

_.each animals, (animal)->
    console.log " " + animal

    //result: dog cat pig

问题:

  1. 这两者有什么区别?
  2. 这两个的main/super作用是什么?

我是 JavaScript 的新手,我尝试阅读 Underscore documentation 但我不理解其中的一些术语。

_.each 只是一个 for 循环,它为每个元素执行给定的函数。

_.map 为每个元素收集给定函数的 return 值,并且 return 是按顺序排列的所有 return 值的列表。

如果您丢弃 _.map 的结果(如您的示例所示),它的作用与 _.each 相同,但会浪费一些内存。

因此,在功能上 _.map_.each 的超集,但在实现方面,如果您实际上不需要,则使用它是不明智的结果。

_.each 没有 return 值 _.map return一个值

示例:

var animals = [ "dog","cat","pig" ]

var newAnimalEach = _.each(animals,(animal)=>{ return animal+'s'})
console.log(newAnimalEach) // returns [ "dog","cat","pig" ]

var newAnimalMap = _.map(animals,(animal)=>{ return animal+'s'})
console.log(newAnimalMap) // returns [ "dogs","cats","pigs" ]