首页 > 解决方案 > Ruby数组:在链接方法时获取所有具有最大值的元素(即,没有排序数组的句柄)

问题描述

假设您需要获取数组中具有最大值的所有元素。

一种可能的方法是sort数组然后使用Enumerable#take_while

array = [ 1, 3, 2, 3, 2, 3 ].sort {|a,b| b - a}
array.take_while { |e| e == array[0] }
#=> [3, 3, 3]

现在,当您漂亮地链接方法并且不想仅仅为了存储排序数组(您需要它来引用take_while块中的第一个元素)而停止链时,您会怎么做?
我在下面发布了问题和答案以供参考,但我可能错过了更好的方法,所以请随意发布您自己的方法

标签: arraysruby

解决方案


另一种方式:

arr = [ 1, 3, 2, 3, 2, 3 ]
arr.sort {|a,b| b - a}.tap { |a| a.select! { |e| e == a.first } }
  #=> [3, 3, 3]

请注意,arr它没有突变。


推荐阅读