[英]How to calculate the sum of array inside hash ruby
Hai我用我的數據創建一個json文件,我需要計算我將它保存到數據庫之前的小時數
我將該哈希值分配給變量有效載荷並嘗試這樣做但它返回一個錯誤TypeError(沒有將Symbol隱式轉換為整數):
total_hours = @payload.sum{|activity| activity[:hours].to_f}
哈希在轉換為json之前
{:activities=>
[{:project=>1,
:activity=>"my activity",
:hours=>0.2e1,
:date=>Sat, 10 Aug 2019 00:00:00 UTC +00:00},
{:project=>2,
:activity=>"Tester",
:hours=>0.2e1,
:date=>Thu, 01 Aug 2019 00:00:00 UTC +00:00},
{:project=>2,
:activity=>"Tester",
:hours=>0.3e1,
:date=>Thu, 01 Aug 2019 00:00:00 UTC +00:00}]}
我需要將我的數組的小時數加到哈希中。 謝謝
如果您使用Rails,這里有一個簡短的方法:
@payload[:activities].pluck(:hours).reduce(:+)
你應該使用:
total_hours = @payload[:activities].sum{|activity| activity[:hours].to_f}
你看,你想要做的是,基本上:
[
{
:project=>1,
:activity=>"my activity",
:hours=>0.2e1,
:date=>Sat, 10 Aug 2019 00:00:00 UTC +00:00
},
{
:project=>2,
:activity=>"Tester",
:hours=>0.2e1,
:date=>Thu, 01 Aug 2019 00:00:00 UTC +00:00
},
{
:project=>2,
:activity=>"Tester",
:hours=>0.3e1,
:date=>Thu, 01 Aug 2019 00:00:00 UTC +00:00
}
].sum{|activity| activity[:hours].to_f}
但是,你在@payload
變量上調用.sum
,這是一個哈希。 您想要的是與鍵關聯的哈希的值:activities
。 因此,您需要在@payload[:activities]
上調用.sum
,其中@payload[:activities]
返回上面的數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.