有没有更有效的方法来重构 ruby 上的哈希迭代?

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

您需要一个包含提供的散列值的数组。可以直接通过values方法获取。 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]