我正在尝试实现 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|
,实际上是在上进行并行赋值>a
和 b
。这不是你要我信任的。我上面给出的是实现它的方法。
关于Ruby 使用 max_by 在多维数组中查找具有最大值的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23335353/