Сортировка хэша в ruby ​​по третьему значению атрибута - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь отсортировать этот рубиновый хеш, используя значение3

map = [
  {:label=>"x", :value1=>"2019-03-03 19:12:50", :value2=>"2019-03-03 19:50:50", :value3=>"00:38:00"},
  {:label=>"y", :value1=>"2019-03-03 19:12:50", :value2=>"2019-03-04 07:47:28", :value3=>"12:34:38"},
  {:label=>"z", :value1=>"2019-03-03 19:12:50", :value2=>"2019-03-03 22:24:13", :value3=>"03:11:23"}
]

Возможно ли это?

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете использовать sort_by и передать блок, получая доступ в каждом элементе к клавише value3 (по возрастанию по умолчанию):

map.sort_by { |element| element[:value3] }
# [{:label=>"x",
  :value1=>"2019-03-03 19:12:50",
  :value2=>"2019-03-03 19:50:50",
  :value3=>"00:38:00"},
 {:label=>"z",
  :value1=>"2019-03-03 19:12:50",
  :value2=>"2019-03-03 22:24:13",
  :value3=>"03:11:23"},
 {:label=>"y",
  :value1=>"2019-03-03 19:12:50",
  :value2=>"2019-03-04 07:47:28",
  :value3=>"12:34:38"}]

И для того же порядка по убыванию,

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