{:name=>"test1", :age=>"1"}, "5"=>{:name=>"test2", :age=>"5"}, "2"=>{:name=>"-6ren">
gpt4 book ai didi

arrays - 如何在 rails 中对哈希进行排序

转载 作者:数据小太阳 更新时间:2023-10-29 07:33:31 25 4
gpt4 key购买 nike

我有一个散列

x= {
"1"=>{:name=>"test1", :age=>"1"},
"5"=>{:name=>"test2", :age=>"5"},
"2"=>{:name=>"test3", :age=>"2"},
"4"=>{:name=>"test4", :adn=>"4"},
"3"=>{:name=>"test5", :adn=>"3"}
}

期望的输出

x= {
"1"=>{:name=>"test1", :age=>"1"},
"2"=>{:name=>"test3", :age=>"2"},
"3"=>{:name=>"test5", :age=>"3"},
"4"=>{:name=>"test4", :adn=>"4"},
"5"=>{:name=>"test2", :adn=>"5"}
}

到目前为止,我尝试执行 x.sort.flatten 并得到了

[
"1", {:name=>"test1", :age=>"1"},
"2", {:name=>"test3", :age=>"2"},
"3", {:name=>"test5", :adn=>"3"},
"4", {:name=>"test4", :adn=>"4"},
"5", {:name=>"test2", :age=>"5"}
]

最佳答案

我认为直接对散列进行排序是不可能的。转换为排序数组并再次返回:

x.sort_by{ |key,_| key.to_i }.to_h

输出:

=> {"1"=>{:name=>"test1", :age=>"1"},
"2"=>{:name=>"test3", :age=>"2"},
"3"=>{:name=>"test5", :adn=>"3"},
"4"=>{:name=>"test4", :adn=>"4"},
"5"=>{:name=>"test2", :age=>"5"}}

如果你想按年龄排序:

x.sort_by{|k,v| v[:age].to_i}.to_h

如果你想按年龄或 adn 排序(如果不是打字错误):

x.sort_by{|k,v| ( v[:age] || v[:adn] ).to_i}.to_h

关于arrays - 如何在 rails 中对哈希进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41273345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com