Используя Ruby, как я могу получить сумму определенного элемента из массива хэшей? - PullRequest
0 голосов
/ 27 ноября 2009

Я в замешательстве, у меня есть @quote.quote_line_items, и это массив таких элементов:

[{id: 85, part_number: "X67AC0M08", short_description: "X67 Threaded Caps M8, 50 pieces", list_price: "18.00", arg_cost: "12.15", long_description: "X67 Threaded Caps M8, 50 pieces", created_at: "2009-11-27 20:29:58", updated_at: "2009-11-27 20:29:58", quote_id: 1259353798}, {...}]

Подумайте, много ли таких элементов в массиве, как я могу получить, скажем, все list_price значения, суммированные.

Есть ли простой способ получить сумму всех значений list_price по ключу?

1 Ответ

4 голосов
/ 27 ноября 2009

Учитывая array = [itemA, ...], и каждый item имеет метод list_price, тогда вы можете сделать это:

sum = array.map{|i|i.list_price}.reduce(:+)

или

sum = array.reduce(0) {|sum,item| sum + item.list_price }

Если каждый элемент является хешем, и вы хотите получить значения из :list_price, попробуйте следующее:

sum = array.reduce(0) {|sum,item| sum + item[:list_price].to_f }

Примечание: отредактировано после исправления рассматриваемого примера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...