簡體   English   中英

如何計算哈希ruby中的數組總和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM