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

时间:2017-09-20 08:25:07

标签: coffeescript underscore.js

我试图在列表中打印所有动物。我尝试使用_.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. 这两者的主要/超级功能是什么?
  3. 我是JavaScript的新手,我试图阅读Underscore documentation,但我不明白一些术语。

2 个答案:

答案 0 :(得分:1)

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

_.map收集每个元素的给定函数的返回值,并按顺序返回所有返回值的列表。

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

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

答案 1 :(得分:0)

_。每个都没有返回值 _.map返回一个值

示例:

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" ]