我试图使用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"}
]
那可能吗?
您可以使用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] }