Ruby on rails Ruby按哈希和值排序
我有这样的数据:Ruby on rails Ruby按哈希和值排序,ruby-on-rails,ruby,sorting,hashmap,Ruby On Rails,Ruby,Sorting,Hashmap,我有这样的数据: hash_data = [ {:key1 => 'value4', :sortby => 4}, {:key1 => 'valuesds6', :sortby => 6}, {:key1 => 'valuedsd', :sortby => 1}, {:key1 => 'value2_data_is_here', :sortby => 2} ] 我想按键sortby hash_data = [ {:key1 =
hash_data = [
{:key1 => 'value4', :sortby => 4},
{:key1 => 'valuesds6', :sortby => 6},
{:key1 => 'valuedsd', :sortby => 1},
{:key1 => 'value2_data_is_here', :sortby => 2}
]
我想按键sortby
hash_data = [
{:key1 => 'valuedsd', :sortby => 1},
{:key1 => 'value2_data_is_here', :sortby => 2},
{:key1 => 'value4', :sortby => 4},
{:key1 => 'valuesds6', :sortby => 6}
]
我尝试过使用冒泡排序,但是在散列
类中是否有任何内置函数用于此目的?:
hash_data.sort_by { |hash| hash[:sortby] }
#=> [{:key1=>"valuedsd", :sortby=>1}, {:key1=>"value2_data_is_here", :sortby=>2}, {:key1=>"value4", :sortby=>4}, {:key1=>"valuesds6", :sortby=>6}]
如果您不关心初始对象,我建议使用来就地修改-这样更节省资源:
hash_data.sort_by! { |hash| hash[:sortby] }
如果通过键将不同类型的数据作为值排序,则应首先统一数据类型,然后才执行排序
要按降序排列数组,请使用(或反向!
):
另一个按降序排序的选项是以下-注意减号(贷记到@sagarpandya82):
告诉我这个错误:
将Float与-0.6进行比较失败
@user1735921与您的输入数据进行比较。如果你有更具体的问题-用真实数据编辑你的问题,因为问一个问题,得到一个完全有效的答案,然后说“嘿,在我的真实数据上,这与OP完全不同,它不起作用”:)嘿,它是对数据排序,但它是按升序排序,我想在descendingFor descending orderhash_data.sort_by{| hash |-hash[:sortby]}
中使用它。@sagarpandya82实际上是一个非常好的注释!将编辑答案
hash_data.sort_by {|hash| hash[:sortby] }.reverse
#=> [{:key1=>"valuesds6", :sortby=>6}, {:key1=>"value4", :sortby=>4}, {:key1=>"value2_data_is_here", :sortby=>2}, {:key1=>"valuedsd", :sortby=>1}]
hash_data.sort_by {|hash| -hash[:sortby] }