如何在ruby中实现argmax?

时间:2012-06-08 23:14:48

标签: ruby json

给出一个json数组:

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

我想找argmax(x),这样我就可以puts argmax(arr, :arg => "x").y获得5。我怎样才能在Ruby中优雅地实现它?

修改:澄清了一下。我们的想法是,您可以在列表中指定要最大化的元素的字段,并且该方法将返回最大化元素。

1 个答案:

答案 0 :(得分:4)

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

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

(嗯,实际上,你会希望数字是数字而不是字符串,因为'50'的排序低于'6'。但我认为你明白了。你可以to_i或做任何事情在块中处理您需要的“真实”值以进行排序。)