在Ruby中找到哈希数组中的最高值

Ali*_*liZ 10 ruby arrays hash

我有一个由几个哈希组成的阵列.我想找到特定键/值的最高值,并打印该哈希的名称值.例如,我有一个"学生"哈希数组,其中包含每个学生的信息.我想找出哪个学生的考试成绩最高并打印出他们的名字.对于下面的阵列,"Kate Saunders"的考试成绩最高,所以我想打印出她的名字.

任何帮助或指示开始这将是非常感谢.我现在有一个hacky工作,但我知道有更好的方法.我是Ruby的新手并喜欢它,但对这个很难过.非常感谢!!!

students = [
    {
        name: "Mary Jones",
        test_score: 80,
        sport: "soccer"
    },
    {
        name: "Bob Kelly",
        test_score: 95,
        sport: "basketball"
    }.
    {
        name: "Kate Saunders",
        test_score: 99,
        sport: "hockey"
    },
    {
        name: "Pete Dunst",
        test_score: 88,
        sport: "football"
    }
]
Run Code Online (Sandbox Code Playgroud)

Bar*_*dys 17

你可以使用max_by方法

students = [ { name: "Mary Jones", test_score: 80, sport: "soccer" }, { name: "Bob Kelly", test_score: 95, sport: "basketball" }, { name: "Kate Saunders", test_score: 99, sport: "hockey" }, { name: "Pete Dunst", test_score: 88, sport: "football" } ]

students.max_by{|k| k[:test_score] }
#=> {:name=>"Kate Saunders", :test_score=>99, :sport=>"hockey"}

students.max_by{|k| k[:test_score] }[:name]
#=> "Kate Saunders"
Run Code Online (Sandbox Code Playgroud)