查找具有特定属性最大值的Ruby数组的元素


Answers:



29

这有帮助吗?

my_array.max {|a,b| a.attr <=> b.attr }

(我假设您的字段具有名称attr


是的,这正是我在寻找的东西,正在搜寻Array API,却找不到任何东西,忘记检查该API是否为Enumberable,谢谢!
理查德·斯托克斯

1
始终检查Enumerable API。它拥有您需要的一切厨房水槽!
2011年

2
我更喜欢使用max_by它,因为它使用起来更简单:该块仅接受一个参数,而不必显式使用spaceship(<=>)运算符。
David Grayson

@DavidGrayson感谢您的信息。我不知道这种方法的存在。我将对您的评论和答案投赞成票。
p.matsinopoulos

3

您还可以对数组进行排序,然后获取最大值,最小值,第二大最大值等。

array = array.sort_by {|k,v| v}.reverse

puts hash[0]["key"]

2
如果您只是要最小或最大,则算法为O(n)。按最小排序O(n log n)。除非需要,否则不要使用它,因为这会导致不必要的性能损失。
Jamie

1
真正。排序只是为了获得最大收益而已。我添加了此功能,以防有人想要获得第二大,第三大等
。– Linju
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.