Мне отправляют вложенный хэш, который необходимо отсортировать по его значениям. Например:
@foo = {"a"=>{"z"=>5, "y"=>3, "x"=>88}, "b"=>{"a"=>2, "d"=>-5}}
При выполнении следующего:
@foo["a"].sort{|a,b| a[1]<=>b[1]}
Я получаю:
[["y", 3], ["z", 5], ["x", 88]]
Это здорово, это именно то, что я хочу. Проблема в том, что я не всегда буду знать, какие ключи мне присылают, поэтому мне нужен какой-то цикл. Я пытался сделать следующее:
@foo.each do |e|
e.sort{|a,b| a[1]<=>b[1]}
end
Для меня это имеет смысл, так как если я вручную вызову @ foo.first [0], я получаю
"a"
, а @ foo.first [1] возвращает
{"z"=>5, "y"=>3, "x"=>8}
, но по какой-то причине это не так. не сортируются должным образом (например, вообще). Я предполагаю, что это потому, что каждый вызывает sort для всего хеш-объекта, а не для значений "a". Как мне получить доступ к значениям вложенного хэша, не зная, что это за ключ?