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 に答える