使用第三个属性值对ruby中的哈希进行排序

问题描述 投票:0回答:1

我试图使用value3对这个ruby哈希进行排序

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"}
]

那可能吗?

ruby datetime hash
1个回答
3
投票

您可以使用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] }
© www.soinside.com 2019 - 2024. All rights reserved.