Если у меня есть массив хэш, каждый с ключом дня:Как преобразовать массив хэшей в отсортированный хеш?
[
{:day=>4,:name=>'Jay'},
{:day=>1,:name=>'Ben'},
{:day=>4,:name=>'Jill'}
]
Что является лучшим способом, чтобы преобразовать его в хэш с отсортированными значениями дня в качестве ключей:
{
:1=>[{:day=>1,:name=>'Ben'}],
:4=>[{:day=>4,:name=>'Jay'},{:day=>4,:name=>'Jill'}]
}
I использую рубин 1.9.2 и Rails 3.1.1
Хеш по природе не сортируются. Ruby 1.9+ поддерживает порядок вставки, поэтому, если вы создадите хэш и вставляете элементы на основе некоторого порядка сортировки, Ruby сохранит их. Однако любые последующие элементы не будут сортироваться и будут добавлены вместо этого. Если вам нужно получить их в определенном порядке, вы можете сортировать ключи до получения значений или вы можете поддерживать массив ключей параллельно хешу и сохранять этот массив в том порядке, который вы хотите, а затем итерации этот массив или использовать его с 'values_at' для извлечения значений в том порядке, в котором вы хотите. –