В общем случае хэши не будут уникальными, поэтому вам нужно фильтровать, а не выбирать один с помощью индексации.Например, предположим, у вас есть это:
arr = [[{:apple => 'abc'}], [{:banana => 'def'}], [{:coconut => 'ghi'}]]
# => [[{:apple=>"abc"}], [{:banana=>"def"}], [{:coconut=>"ghi"}]]
Теперь давайте предположим, что вы хотите получить значение, соответствующее любому хешу, с ключом :coconut
.Тогда просто используйте:
arr.flatten.map { |h| h[:coconut] }.compact
# => ["ghi"]
Это дает вам список ответов.В этом случае есть только один соответствующий ключ, поэтому в массиве есть только одна запись.Если бы были другие хэши с ключом: coconut, то у вас было бы что-то вроде:
# => ["ghi", "jkl", "mno"]
В целом, это очень необычная структура данных.Если вы контролируете структуру, то вам следует рассмотреть возможность использования объектов, которые могут возвращать вам разумные ответы желаемым образом, а не хешами.