我有一个2D数组:
[["user1", 20], ["user2", 30], ["user3", 10]]
子阵列的第一个元素是用户名,第二个元素是其得分.
我需要返回最高分的用户名.例如,它会返回"user2"
.
一个用户的分数较高,或者他们都有相同的分数(在这种情况下应该返回"all"
).
我知道如何通过一堆迭代和多行代码来实现这一点,但我正在努力寻找"最佳实践方式".
你会提出什么建议?
查看max_by
users = [["user1", 20], ["user2", 30], ["user3", 10]] users.max_by{ |user, weight| weight } #=> ["user2", 30] # shorthand users.max_by(&:last) #=> ["user2", 30] users.max_by(&:last).first #=> "user2"
值得一提的是,如果你有多个最大值,它将只返回第一个.