我的哈希看起来如下.我希望输出是相同的哈希形式,但根据价格排列哈希.
{
1=>{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>790000
},
2=>{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>720000
},
3=>{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>750000
},
4=>{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>710000
}
}
Run Code Online (Sandbox Code Playgroud)
我读过如何按数值对Ruby Hash进行排序?但它只是一个嵌套的哈希.对我如何实现这一目标完全无能为力.如果你们中的任何一个愿意帮助我,将不胜感激.
试试这个:
> myhash.sort_by{|_,v| v["price"]}.to_h
#=>
{
4=>
{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>710000
},
2=>
{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>720000
},
3=>
{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>750000
},
1=>
{
"name"=>"Mark",
"date"=>"27/08/2015",
"bed"=>"3",
"furnish"=>"Fully",
"size"=>"10",
"price"=>790000
}
}
Run Code Online (Sandbox Code Playgroud)
如果您有像字符串一样的价格,"15,000"你可以删除逗号seprator并将其转换为整数,如:
> "15,000"
> "15,000".tr(',', '').to_i
#=> 15000
Run Code Online (Sandbox Code Playgroud)
所以代码就像:
> myhash.sort_by{|_,v| v["price"].tr(',', '').to_i}.to_h
Run Code Online (Sandbox Code Playgroud)