2017-09-20 103 views
0

我试图列出我列表中的所有动物。我试图使用_.each,它工作正常。但是当我使用_.map时,它们具有相同的结果。_.each vs _.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. 这两个主要/超级功能是什么?

我是JavaScript新手,我尝试阅读Underscore documentation,但我不明白一些术语。

+1

你有这些功能的阅读文档? –

+0

我是JavaScript新手,我尝试阅读Underscore文档,但我不理解某些术语。 –

回答

1

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

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

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

因此,功能_.map_.each的超集,但是执行明智这是不明智的,如果你实际上并不需要的结果来使用它。

+0

谢谢@Jan。感谢您的回答。 –

0

_.each没有返回而 _.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" ] 
相关问题