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 order
hash_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] }