我有一系列哈希,如下所示:
details = [
{:name => "Alice", :age => 20},
{:name => "Ted", :age => 25},
{:name => "Poppy", :age => 33},
{:name => "Amy", :age => 20},
{:name => "Ted", :age => 90},
{:name => "Amy", :age => 22},
{:name => "Ted", :age => 23}
]
Run Code Online (Sandbox Code Playgroud)
我希望能够排序,以便可以根据每个人的名字出现的次数进行排序。例如,输出可能是:
"Ted, Ted, Ted, Amy, Amy, Alice, Poppy"
谁能帮忙吗?:)
谢谢
获取一个名称计数哈希,然后按名称计数排序:
details.each.with_object(Hash.new(0)) { |e, c| c[e[:name]] += 1 }.
then { |c| details.sort_by { |e| -c[e[:name]] } }.
map { |e| e[:name] }
Run Code Online (Sandbox Code Playgroud)