映射到没有临时变量的对象

时间:2014-12-16 19:28:24

标签: javascript coffeescript lodash ramda.js

如何映射对象数组并基于它创建另一个对象(基于元素属性),没有临时对象?所以,如果我有类似的东西:

 foos = [ { name: 'A' }, { name: 'B' }, { name: 'C' } ]
 objx = {}
 foos.map (x)-> 
     objx[x.name] = 'name is ' + x.name.toLowerCase()

 # objx = { A: 'name is a', B: 'name is b', C: 'name is c' }

如果没有objx的话,我怎么能完成同样的事情呢? 使用或不使用任何帮助库 - lodash,ramda,jquery,angular等。

1 个答案:

答案 0 :(得分:4)

您可以通过将空对象作为累加器传递内置的reduce来执行此操作:

foos.reduce (acc, x) ->
  acc[x.name] = "name is #{x.name.toLowerCase()}"
  acc
,{}