Как сложить определенные ключи в хэше?
[{"mark"=>"Cherry", "model"=>"A5 2,0i", "year"=>2018, "consumption"=>8.042283965144168}, {"mark"=>"Cherry", "model"=>"A5 2,0i", "year"=>2018, "consumption"=>8.140509738669785}, {"mark"=>"Cherry", "model"=>"A5 2,0i", "year"=>2018, "consumption"=>8.305163801196718}, {"mark"=>"Cherry", "model"=>"A5 2,0i", "year"=>2018, "consumption"=>8.945557313139568}]
есть массив с вложенными хэшами, нужно посчитать сумму всех consumption, как лучше это реализовать?
Ответы (2 шт):
Автор решения: IceShard90
→ Ссылка
arr = [{"mark"=>"Cherry", "model"=>"A5 2,0i", "year"=>2018, "consumption"=>8.042283965144168}, {"mark"=>"Cherry", "model"=>"A5 2,0i", "year"=>2018, "consumption"=>8.140509738669785}, {"mark"=>"Cherry", "model"=>"A5 2,0i", "year"=>2018, "consumption"=>8.305163801196718}, {"mark"=>"Cherry", "model"=>"A5 2,0i", "year"=>2018, "consumption"=>8.945557313139568}]
arr.flat_map(&:to_a).group_by(&:first).map{ |k, g| {k => g.map(&:last)} }.detect{|f| f["consumption"] }.values.flatten.sum
Смотрится некрасиво, но работает