У меня есть массив хэшей, который должен быть довольно простым в сортировке, но так как я очень новичок в рубине и все еще смотрю в документы, у меня возникают проблемы для сортировки хеша, у которого мало комбинации ключевых значений, но их нужно сортировать на основе нескольких ключевых значений.Сортировка хэша с пользовательским компаратором в ruby
[{:attr1 => 3, :attr2 => 'test', attr3 => 'test2'},
{:attr1 => 1, :attr2 => 'test', attr3 => nil},
{:attr1 => 1, :attr2 => 'test', attr3 => 'test3'},
{:attr1 => 2, :attr2 => 'test', attr3 => 'test3'}]
Поэтому я хотел бы отсортировать его в соответствии с пользовательским правилом. И пользовательское правило будет сначала взглянуть на attr1
и отсортировать по нему в порядке убывания.
Если есть такие же значения attr1
, но один из них attr3
равен nil
, тогда заказывайте те, у кого последний.
Поэтому я думаю, что мне нужно будет создать собственный компаратор, или нет. Как я могу сделать это с наименьшим количеством боли?
Если это должно было быть отсортирован это будет выглядеть следующим образом:
[{:attr1 => 3, :attr2 => 'test', attr3 => 'test2'},
{:attr1 => 2, :attr2 => 'test', attr3 => 'test3'},
{:attr1 => 1, :attr2 => 'test', attr3 => 'test3'},
{:attr1 => 1, :attr2 => 'test', attr3 => nil}
]
Что такое 'attr3'? Перед использованием вы должны определить локальные переменные или методы. – sawa