Ruby: сортировать массив хэшей, даже если ключ может не существовать - PullRequest
9 голосов
/ 27 сентября 2011

В приложении rails у меня есть массив хэшей, которые я могу легко отсортировать с помощью

array_of_hashes.sort_by { |hash| hash[:key_to_sort] }

Но что, если не у каждого члена массива есть ключ :key_to_sort? Тогда сортировка не удастся "сравнение строки с нулем не удалось". Есть ли способ, позволяющий продолжить сортировку? Или есть другой способ сделать это?

1 Ответ

13 голосов
/ 27 сентября 2011

Зависит от того, что вы хотите сделать, если у хеша нет ключа сортировки.Я могу представить два сценария:

1) исключить хеш из сортировки

arr.delete_if { |h| h[:key_to_sort].nil? }.sort_by { |h| h[:key_to_sort] }

2) поместить хеш в начало / конец массива:

arr.sort_by { |h| h[:key_to_sort] || REALLY_SMALL_OR_LARGE_VALUE }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...