由于我想在response_time
上做一些统计数据,我正在寻找一种简单的方法来获取数组或列表中的所有response_time
以计算平均响应时间,中位数作为一个Ruby初学者,当哈希包含许多哈希值时,我总是卡住。
{
0 => {
:name => "log_endpoint",
:response_time => "18"
},
1 => {
:name => "auth_endpoint"
:response_time => "16"
},
2 => {
:name => "get_friends_endpoint"
:response_time => "16"
},
3 => {
:name => "get_friends_endpoint"
:response_time => "10"
},
4 => {
:name => "log_endpoint",
:response_time => "14"
}
}
再次感谢您的帮助,
微米。
答案 0 :(得分:1)
假设您的哈希被称为stats
,您可以这样做:
response_times = stats.values.map{ |s| s[:response_time] }
这将遍历外部哈希中的所有值,并从所有内部哈希中收集:respnose_time
。
答案 1 :(得分:1)
您可以对哈希的每个值使用collect
来将您想要的内容收集到数组中。假设您的哈希被称为information
,information.values
将为您提供information
中每个值的数组,然后在该数组上调用collect,将具有给定条件的每个元素添加到数组中: / p>
array_of_stuff = information.values.collect{ |info| info[:response_time] }
注意:我看到w0lf发布了一个非常相似的答案。据我所知,map和collect会做同样的事情,我只是觉得在这种情况下收集声音更合乎逻辑。