You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby数组链式调用时无需存储排序数组获取所有最大值元素的方法

不中断链式调用的实现方案

以下三种方案均无需额外声明变量存储中间结果,全程保持链式调用逻辑:

  • 性能最优实现(O(n)时间复杂度,仅遍历2次数组,适合大数据量场景)
[1, 3, 2, 3, 2, 3].then do |arr|
  max_val = arr.max
  arr.select { _1 == max_val }
end
#=> [3, 3, 3]

Ruby 3.4+ 支持变量绑定写法可以进一步简化代码:

[1, 3, 2, 3, 2, 3].then { _1.max => max_val; _1.select { _1 == max_val } }
  • 排序场景适配实现(如果业务逻辑本身已经需要排序,可复用排序结果不中断链路)
[1, 3, 2, 3, 2, 3].sort { _2 - _1 }.then { _1.take_while { _1 == _.first } }
#=> [3, 3, 3]
  • 最简洁实现(小数据量场景下代码最紧凑易读)
[1, 3, 2, 3, 2, 3].group_by(&:itself).max.last
#=> [3, 3, 3]

内容的提问来源于stack exchange,提问作者Fravadona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:15:02