1

给定一个 json 数组:

[{ "x":"5", "y":"20" },{ "x":"6", "y":"10" },{ "x":"50", "y":"5" }]

我想找到argmax(x),这样我就可以做到puts argmax(arr, :arg => "x").y并得到5。如何在 Ruby 中优雅地实现这一点?

编辑:澄清一点。这个想法是您可以在列表中指定要最大化的元素的字段,并且该方法将返回最大化的元素。

4

1 回答 1

4

我想你想要Enumerable#max_by。就像你y说的那样,它将是:

arr.max_by {|hash| hash['x']}['y']

(嗯,实际上,你会希望数字是数字而不是字符串,因为 '50' 排序低于 '6'。但我想你明白了。你可以to_i或做任何你需要的处理来获得要排序的“真实”值。)

于 2012-06-08T23:33:15.337 回答