如何在CoffeeScript中执行注入操作?

时间:2012-06-19 02:47:44

标签: ruby coffeescript

我正在努力做到这一点,但使用CoffeeScript:

# ruby:
items.map {|item| item.price * item.quantity }.reduce(:+)

到目前为止我所拥有的:

# coffeescript:
item.price * item.quantity for item in items

如何汇总数组中的所有项?更一般地说,我如何在数组中的所有项目上执行任何操作(在Ruby中,这将是injectreduce)?

3 个答案:

答案 0 :(得分:3)

没关系,我找到了。完成了reduce

(item.price * item.quantity for item in items).reduce (x, y) -> x + y

答案 1 :(得分:2)

我不知道一般的reduce函数,但对于累加器,你可以做

sum = 0
sum += item.price * item.quantity for item in items

答案 2 :(得分:0)

更通用的reduce函数可能如下所示:

total = ((agg = 0) ->
  agg + item.price * item.quantity
)(total, item) for item in items

result = ((aggregate = 'default value') ->
  // function body changing, then returning aggregate
  aggregate
)(result, i) for i in some_array