我有一个由几个哈希组成的数组。我想找到特定键/值的最高值,并打印该哈希的名称值。例如,我有一个"学生"包含每个学生信息的哈希数组。我想找出哪个学生的考试成绩最高并打印出他们的名字。对于下面的阵列," 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"
}
]
答案 0 :(得分:13)
您可以使用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"
答案 1 :(得分:1)
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" },
{ name: "Ima Hogg", test_score: 99, sport: "darts" }
]
确定a * @Bartek的最高分。
max_score = students.max_by { |h| h[:test_score] }[:test_score]
#=> 99
然后确定哪个学生有那个分数。
star_students = students.select { |h| h[:test_score] == max_score }.
map { |h| h[:name] }
#=> ["Kate Saunders", "Ima Hogg"]
puts star_students
# Kate Saunders
# Ima Hogg
Ima的父亲是James ("Big Jim") Hogg,1891年到1895年的德克萨斯州州长.Ima有一个名叫“Ura”的妹妹(我认为这是事实)原来是城市传奇。