Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
给定一个 json 数组:
[{ "x":"5", "y":"20" },{ "x":"6", "y":"10" },{ "x":"50", "y":"5" }]
我想找到argmax(x),这样我就可以做到puts argmax(arr, :arg => "x").y并得到5。如何在 Ruby 中优雅地实现这一点?
argmax(x)
puts argmax(arr, :arg => "x").y
5
编辑:澄清一点。这个想法是您可以在列表中指定要最大化的元素的字段,并且该方法将返回最大化的元素。
我想你想要Enumerable#max_by。就像你y说的那样,它将是:
Enumerable#max_by
y
arr.max_by {|hash| hash['x']}['y']
(嗯,实际上,你会希望数字是数字而不是字符串,因为 '50' 排序低于 '6'。但我想你明白了。你可以to_i或做任何你需要的处理来获得要排序的“真实”值。)
to_i