Ruby 使用 max_by 在多维数组中查找具有最大值的元素

标签 ruby arrays sorting multidimensional-array

我正在尝试实现 max_by 以在多维数组中找到具有最高值的元素。
代码如下

ar = [[123,345,43,35,43,1],[456,123,43,35,43,1],[675,123,43,35,43,1],[123,123,43,35,43,321]]
x = ar.max_by { |a,b| a <=> b }
p "result #{x.inspect}"

输出是 "result [456, 123, 43, 35, 43, 1]" 你能向我解释一下我的代码有什么问题吗?

更新 1
使用 max_by

ar  = [ {a:1},{a:2},{a:3}]
x = ar.max_by { |e| e[:a] }
p "result #{x.inspect}"

我留下这个更新是为了提醒自己任何可能遇到类似问题的人

最佳答案

你需要做的:

ar = [[123,345,43,35,43,1],[456,123,43,35,43,1],[675,123,43,35,43,1],[123,123,43,35,43,321]]
x = ar.max { |a,b| a.max <=> b.max }

使用#max_by,您将传递每个元素array,然后是|a, b|,实际上是在上进行并行赋值>ab。这不是你要我信任的。我上面给出的是实现它的方法。

关于Ruby 使用 max_by 在多维数组中查找具有最大值的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23335353/

相关文章:

sorting - 代码优化技巧 :

swift - 如何迭代有序集?

ruby - ruby 中字符串中的 gsub ASCII 码字符

ruby-on-rails - 未定义的局部变量或方法 - 下载文件 - Ruby on Rails

ruby-on-rails - 在多个条件下有效地获取记录

javascript - 获取 JSON 对象中的数组并使用它来分配 div 的背景

java - 查找矩阵中所有可能的唯一数组

excel - 计算最高2方平均匹配

ruby-on-rails - rails : Pass Parameters to New Controller during 'redirect_to'

arrays - Swift - 如果包含字符串并附加到另一个数组,则在数组中搜索