как слить Джонс Арри в рубин на рельсах - PullRequest
0 голосов
/ 31 мая 2018

объединить данные в зависимости от месяца, в том же месяце

Ответы [ 4 ]

0 голосов
/ 31 мая 2018
grouped = array.group_by { |d| d[:month] }
new_array = []
grouped.each do |data|
  list = {}
  sum = 0
  month = ""
  data[1].each do |e|
    sum = sum + e[:revenu]
    month = e[:month]
  end
  list[:revenu] = sum
  list[:month] = month
  new_array.push(list)
end
0 голосов
/ 31 мая 2018
new_arr = given_array.group_by{ |data| data[:month]}
new_arr.map{|key, val| {"month": key, "revenu": val.inject(0){|sum, hash| sum + hash[:revenu]}}}
0 голосов
/ 31 мая 2018
sample = []
    array.each do |data|
        sample_hash = {}
        check_exi = sample.select {|h| h[:month] == data[:month]}
        if check_exi.empty?
            sample_hash[:revenu] = data[:revenu]
            sample_hash[:month] = data[:month]
            sample.push(sample_hash)
        else
            check_exi[0][:revenu] = check_exi[0][:revenu] + data[:revenu]
        end
    end
0 голосов
/ 31 мая 2018

Вы можете использовать group_by для группировки данных по :month, а затем использовать sum длядобавить доход.

array
  .group_by{ |data| data[:month] }
  .map{ |k, v| {month: k, revenu: v.sum { |m| m[:revenu] || 0}} }

#=> [{:month=>"January", :revenu=>0},
#=> {:month=>"February", :revenu=>0},
#=> {:month=>"March", :revenu=>0},
#=> {:month=>"April", :revenu=>0},
#=> {:month=>"May", :revenu=>6389.216324018002},
#=> {:month=>"June", :revenu=>0},
#=> {:month=>"July", :revenu=>0},
#=> {:month=>"August", :revenu=>0},
#=> {:month=>"September", :revenu=>0},
#=> {:month=>"October", :revenu=>0},
#=> {:month=>"November", :revenu=>0},
#=> {:month=>"December", :revenu=>0}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...