如何将此Ruby哈希转换为数组?
我在散列中有这些数据:如何将此Ruby哈希转换为数组?,ruby,arrays,hash,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。您可以通过以下方式进行管理: list.collect(&:values
[{"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。您可以通过以下方式进行管理:
list.collect(&:values).flatten
您可以通过以下方式进行管理:
list.collect(&:values).flatten
有很多方法可以做到这一点。让我们将其分解为您需要完成的基本步骤:
map
(或者collect
,它们是相同的方法)。这将处理步骤1和3。第二步本身就很简单。您只需要使用项['total_time']
获取键的值。把它们放在一起,你就得到了:
times.map{ |time| time['total_time'] }
有很多方法可以做到这一点。让我们将其分解为您需要完成的基本步骤:
map
(或者collect
,它们是相同的方法)。这将处理步骤1和3。第二步本身就很简单。您只需要使用项['total_time']
获取键的值。把它们放在一起,你就得到了:
times.map{ |time| time['total_time'] }
谈到实现这一目标的许多方法:
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)
谈到实现这一目标的许多方法:
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)
对于那些不太熟悉Ruby的人来说,
collect
与map
是一样的。还有,收集代码>或映射
可以用来改变对象而不是创建一个新的对象。在这种非常特殊的情况下,map
调用可能更简单,但我发布的代码片段是一种通用模式,适用于各种情况。这是“给我一个一维数组中多个散列的值”方法。collect
与map
对于那些不太熟悉Ruby的人是一样的。还有,收集代码>或映射
可以用来改变对象而不是创建一个新的对象。在这种非常特殊的情况下,map
调用可能更简单,但我发布的代码片段是一种通用模式,适用于各种情况。这是“给我一个一维数组中多个散列的值”的方法。有很多方法,但我认为这是合理的。在这种情况下,可能是一个带{}的单行程序,而不是do/end?这么短的代码看起来有点奇怪。是的,多行语法是我在写的时候修改过的。我会更新的。有很多方法,但我认为这是合理的。在这种情况下,可能是一个带{}的单行程序,而不是do/end?这么短的代码看起来有点奇怪。是的,多行语法是我在写的时候修改过的。我会更新它。@undur_gongor然后请将其作为curiosity@undur_gongor那么请把它当作一种好奇心