ArgumentError:Hash与Hash的比较失败 - 按散列名称对散列数组进行排序

Sev*_*rin 1 ruby arrays sorting hash

我有以下数组:

names = [
{"Adriana"=>{:gender=>"female", :nationality=>"danish"}},
{"Adriane"=>{:gender=>"female", :nationality=>"danish"}},
{"Agatha"=>{:gender=>"female", :nationality=>"danish"}},
{"Adrianna"=>{:gender=>"female", :nationality=>"danish"}}
]
Run Code Online (Sandbox Code Playgroud)

我如何按每个哈希的名称对这个哈希数组进行排序?

我试过了names.sort!,哪个扔了ArgumentError: comparison of Hash with Hash failed.

Aru*_*hit 5

只需按照以下Enumerable#sort_by方法使用.

names = [
{"Adriana"=>{:gender=>"female", :nationality=>"danish"}},
{"Adriane"=>{:gender=>"female", :nationality=>"danish"}},
{"Agatha"=>{:gender=>"female", :nationality=>"danish"}},
{"Adrianna"=>{:gender=>"female", :nationality=>"danish"}}
]

names.sort_by { |h| h.first.first }
# => [{"Adriana"=>{:gender=>"female", :nationality=>"danish"}},
#     {"Adriane"=>{:gender=>"female", :nationality=>"danish"}},
#     {"Adrianna"=>{:gender=>"female", :nationality=>"danish"}},
#     {"Agatha"=>{:gender=>"female", :nationality=>"danish"}}]
Run Code Online (Sandbox Code Playgroud)