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

Ruby使用max_by在多维数组中查找具有最大值的元素,ruby,arrays,sorting,multidimensional-array,Ruby,Arrays,Sorting,Multidimensional Array,我试图通过实现max\u,以在多维数组中查找值最高的元素。 代码如下 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}" 我留下此更新提醒自己,无论谁可能遇到类似问题,您都需要: ar = [[123,345,43,35,43,1],[45

我试图通过实现
max\u,以在多维数组中查找值最高的元素。
代码如下

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}"
我留下此更新提醒自己,无论谁可能遇到类似问题,您都需要:

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 }
ar=[[123345,43,35,43,1],[456123,43,35,43,1],[675123,43,35,43,43,1],[123123,43,35,43321]]
x=ar.max{a,b | a.max b.max}

使用
#max_by
,您将传递每个元素数组,然后
|a,b |
,实际对
a
b
执行并行赋值。我相信这不是你想要的。我上面给出的是执行此操作的方法。

max\u by
为您处理比较,只需返回一个元素的最大值:

甚至更短:

ar.max_by(&:max)
#=> [675, 123, 43, 35, 43, 1]

如果我没弄错的话,你需要找到每个子数组的最大值,结果应该是这样的:

[345, 456, 675, 321] 
如果是这样,你在寻找什么:

x = ar.map{|x| x.max}

谢谢你纠正我的错误
max_by
应仅与哈希一起使用?除非您显示您想要的内容或它与您得到的内容有何不同,否则我们无法判断您的代码有何错误。我想找到数组中具有更大值的元素。多亏了@arup,问题才得以解决
[345, 456, 675, 321] 
x = ar.map{|x| x.max}