У меня есть массив таких элементов:
@items = [
{price: 12, quantity:1},
{price: 4, quantity:1},
{price: 8, quantity:1}
]
И я ищу что-то вроде этого:
sumPrice: ->
@items.sum (item) -> item.price * item.quantity
Или все как можно ближе к этому, что делает его очень легким для всех, кто читает код, чтобы понять, что происходит.
До сих пор я придумал:
sumPrice: ->
(items.map (a) -> a.price * a.quantity).reduce (a, b) -> a + b
- содержит слишком много функциональной магии
- теряет описательность
и
sumPrice: ->
sum = 0
for item in items
sum += item.price * item.quantity
sum
- которые могут быть поняты начинающим программистам JS/Coffee
- чувствует себя немного глупо.
Мне нравится CoffeeScript, поэтому я надеюсь, что есть лучшее решение для этого и подобных сценариев, которые я пропускаю.