получить индекс из массива хэшей - PullRequest
0 голосов
/ 23 марта 2012

Я заполняю массив хэшей из базы данных, и то, что я получаю в итоге, выглядит так:

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

Что я хочу сейчас сделать, это записать значение element2, если element1 имеет значение1.Я попытался сделать

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 ]

2 голосов
/ 23 марта 2012

Вы не можете использовать index для частичных совпадений. Попробуйте использовать detect.

my_array.detect { |el| el[:element1] == "value1" }[:element2]
=> "value2"
1 голос
/ 23 марта 2012
result = [{:element1 => "value1", :element2 => "value2"}, {:element1 => "value3", :element2 => "value4"}]

result.each do |x|
  puts "#{x[:element2]}" if x[:element1]=="value1"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...