Ruby on rails 在散列中减去值

Ruby on rails 在散列中减去值,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想从两个散列中减去两个值。了解我的成长三角洲 我的哈希如下所示: [ {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16617331511, :timeCapturedmax=>"February 18, 2018 at 09:27 AM", :time_unixmax=>1518964024}, {:device=>"router", :portmax=>"Por

我想从两个散列中减去两个值。了解我的成长三角洲

我的哈希如下所示:

[
 {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16617331511, :timeCapturedmax=>"February 18, 2018 at 09:27 AM", :time_unixmax=>1518964024}, 
 {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16617216094, :timeCapturedmax=>"February 18, 2018 at 09:22 AM", :time_unixmax=>1518963724}, 
 {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16617202279, :timeCapturedmax=>"February 18, 2018 at 09:18 AM", :time_unixmax=>1518963485}, 
 {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16616985649, :timeCapturedmax=>"February 18, 2018 at 09:12 AM", :time_unixmax=>1518963135}, 
 {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16616404836, :timeCapturedmax=>"February 18, 2018 at 09:07 AM", :time_unixmax=>1518962829},  
 {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16616368250, :timeCapturedmax=>"February 18, 2018 at 09:03 AM", :time_unixmax=>1518962583}
]
因此,我希望:

Rate_Discard = [{:device=>"router", :discard_sub=>115417}, {:device=>"router", :discard_sub=>13815}, {:device=>"router", :discard_sub=>216630}]

如果您的数组是
arr
arr[0][:discardmax]-arr[1][:discardmax]#=>115417
arr[1][:discardmax]-arr[2][:discardmax]#=>13815
arr[2][:discardmax]-arr[3][:discardmax]#=>216630
。其他三对(2->3、3->4和4->5)的情况如何?您有一个哈希数组,而不是哈希。当您给出一个示例时,为每个输入对象分配一个变量会很有帮助。这里您只有一个输入对象,一个哈希数组,因此您可以将变量
arr
分配给它,正如我在回答中所做的那样。通过这种方式,读者可以在答案和注释中引用这些变量(此处仅为
arr
),而无需定义它们。“我希望得到以下结果”-当开发人员希望得到结果时,正确的操作是编写代码。您好,如果我有此数组:
arr = [
  {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16617331511, 
     :timeCapturedmax=>"February 18, 2018 at 09:27 AM", :time_unixmax=>1518964024},
  {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16617216094,
     :timeCapturedmax=>"February 18, 2018 at 09:22 AM", :time_unixmax=>1518963724},
  {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16617202279,
     :timeCapturedmax=>"February 18, 2018 at 09:18 AM", :time_unixmax=>1518963485},
  {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16616985649,
     :timeCapturedmax=>"February 18, 2018 at 09:12 AM", :time_unixmax=>1518963135},
  {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16616404836,
     :timeCapturedmax=>"February 18, 2018 at 09:07 AM", :time_unixmax=>1518962829},
  {:device=>"router", :portmax=>"Port 1/5/3:2006.0", :discardmax=>16616368250,
     :timeCapturedmax=>"February 18, 2018 at 09:03 AM", :time_unixmax=>1518962583}
]

arr.each_cons(2).map do |g,h|
  { device: g[:device], discard_sub: g[:discardmax]-h[:discardmax] }
end
  #=> [{:device=>"router", :discard_sub=>115417},
  #    {:device=>"router", :discard_sub=>13815},
  #    {:device=>"router", :discard_sub=>216630},
  #    {:device=>"router", :discard_sub=>580813},
  #    {:device=>"router", :discard_sub=>36586}]