如何映射对象数组并基于它创建另一个对象(基于元素属性),没有临时对象?所以,如果我有类似的东西:
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等。
答案 0 :(得分:4)
您可以通过将空对象作为累加器传递内置的reduce
来执行此操作:
foos.reduce (acc, x) ->
acc[x.name] = "name is #{x.name.toLowerCase()}"
acc
,{}