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}