这就是我在Ruby哈希中处理值以获得字母数字小写排序输出的方式(极端示例):
myhash = {
"x" => "zebra",
"one" => "1",
"alpeh" => "alpha",
"lower" => "january",
"1" => "January",
"2" => "February",
"answer" => "42"
}
m = myhash.values
puts m.map{|i| i.downcase}.sort
Run Code Online (Sandbox Code Playgroud)
输出:
1
42
alpha
february
january
january
zebra
Run Code Online (Sandbox Code Playgroud)
这工作正常,我没有问题,但想知道是否有一个更简单/更有效的方式,我错过了?
既然你想修改值(输出小写字符串),我认为你不能做更好的事情.
如果输出原始值只要排序很好就可以了,你可以使用:
myhash.values.sort_by{|h|h.downcase}
Run Code Online (Sandbox Code Playgroud)
编辑:感谢Casper,这是一个更紧凑的版本:
myhash.values.sort_by(&:downcase)
Run Code Online (Sandbox Code Playgroud)
编辑:感谢Mischa,如果你想保留你提供的输出:
myhash.values.map(&:downcase).sort
Run Code Online (Sandbox Code Playgroud)