[英]Is there a more efficient way to refactor the iteration of the hash on ruby?
我在這里有一個迭代:
container = []
summary_data.each do |_index, data|
container << data
end
summary_data
的結構如下所示:
summary_data = {
"1" => { orders: { fees: '25.00' } },
"3" => { orders: { fees: '30.00' } },
"6" => { orders: { fees: '45.00' } }
}
我想刪除數字鍵,例如“1”、“3”。
我希望得到以下container
:
[
{
"orders": {
"fees": "25.00"
}
},
{
"orders": {
"fees": "30.00"
}
},
{
"orders": {
"fees": "45.00"
}
}
]
有沒有更有效的方法來重構上面的代碼?
感謝任何幫助。
您可以使用Hash#values
方法,如下所示:
container = summary_data.values
如果內部哈希都具有相同的結構,那么唯一有趣的信息就是費用:
summary_data.values.map{|h| h[:orders][:fees] }
# => ["25.00", "30.00", "45.00"]
如果您想對這些費用進行一些計算,您可以將它們轉換為數字:
summary_data.values.map{|h| h[:orders][:fees].to_f }
# => [25.0, 30.0, 45.0]
將美分作為整數使用可能會更好,以避免任何浮點錯誤:
summary_data.values.map{|h| (h[:orders][:fees].to_f * 100).round }
=> [2500, 3000, 4500]
您需要一個具有提供哈希值的數組。 您可以直接通過 values 方法獲取。 summary_data.values
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.