从ruby中的multidimen数组访问值

时间:2014-06-01 17:28:14

标签: ruby-on-rails ruby arrays multidimensional-array

嗨我有一个我使用push创建的数组

arr.push(h, s.power)  

PS:hs.power都是变量,但取决于我应用的条件

最终结束了这样的事情

[22,"0.014",22,"0.01",22,"0.01",22,"0.082",22,"0.0002",22,"0.02822",22,"0.0042822",22,"0.041662",21,"0.0042822",21,"0.11107"]

但现在我想为22, 21这样的每个新值创建新数组,但我无法使用我尝试过的许多组合来访问它,例如arr[22]arr.map

1 个答案:

答案 0 :(得分:3)

您应该考虑使用Hash。请参阅ruby hash documentation here

因此,不要将hs.power推送到数组中,而是将它们添加到哈希中,如下所示:

my_hash[h] ||= []
my_hash[h].push(s.power)

第一行确保哈希中有一个数组,用于h的最新值。第二个将s.power添加到该数组。

如果您反复运行此代码,最终会为h的每个唯一值设置一个数组,您可以像这样访问:

my_hash[22] # <= returns the array of s.power values for h=22
my_hash[21] # <= returns the array of s.power values for h=21

如果我理解你的问题,这应该是一个干净的方式来做你想要的。