从散列数组中获取索引

时间:2012-03-23 10:12:08

标签: ruby-on-rails

我正在填充数据库中的哈希数组,最后得到的结果如下:

[{:element1 => "value1", :element2 => "value2"}, {:element1 => "value3", :element2 => "value4"}]

如果element1具有value1,我现在要做的是写入element2的值。我试着做了

puts my_array[my_array.index(:element1 => "value1")].element2

但这只会给我一个错误说:

no implicit conversion from nil to integer

我现在使用的是

puts my_array.find_by_element1("value1").element2

但是每次都会查询数据库,如果可能的话我想避免这种情况,因为我已经拥有了所有的值。

编辑:我的Ruby版本是1.8.7

2 个答案:

答案 0 :(得分:2)

您不能将index用于部分匹配。尝试使用detect

my_array.detect { |el| el[:element1] == "value1" }[:element2]
=> "value2"

答案 1 :(得分:1)

result = [{:element1 => "value1", :element2 => "value2"}, {:element1 => "value3", :element2 => "value4"}]

result.each do |x|
  puts "#{x[:element2]}" if x[:element1]=="value1"
end