我如何将这个Ruby哈希转换为数组?

时间:2012-01-13 19:11:06

标签: ruby arrays hash

我将这些数据放在哈希中:

[{"total_time"=>"00:04:48.563044"}, {"total_time"=>"00:05:29.835918"}, {"total_time"=>"00:09:38.622569"}]

但我想要这个:

["00:04:48.563044", "00:05:29.835918", "00:09:38.622569"]

需要使用Ruby 1.8.7。

3 个答案:

答案 0 :(得分:5)

你可以用这个来管理:

list.collect(&:values).flatten

答案 1 :(得分:3)

有很多方法可以实现这一目标。让我们分解你需要完成的基本步骤:

  1. 迭代哈希数组中的每个项目
  2. 对于每件商品,请抓住时间值
  3. 将这些重新组合成一个列表
  4. 由于您希望获取每个项目的结果,而不仅仅是查看它,您需要使用map(或collect,它们的实际情况相同)。这将照顾第1步和第3步。第2步本身就很容易。您只需要使用item['total_time']获取密钥的值。把它们放在一起,你就得到了:

    times.map{ |time| time['total_time'] }
    

答案 2 :(得分:0)

谈到实现这一目标的大量方法:

a = [{"total_time"=>"00:04:48.563044"}, {"total_time"=>"00:05:29.835918"}, {"total_time"=>"00:09:38.622569"}]

p a.map(&:flatten).map(&:last)