如何在 ruby 中将数组中的值相互比较?
我想比较数组中的值来检查数组的最大值。
你想找到最大值吗?它已经完成了。
[1, 5, 3].max # => 5
Ruby 数组(或任何包含 Enumerable 模块的东西)有一个max
方法:
a = [20, 30, 100, 2, 3]
a.max # => 100
如果您想为教育目的编写自己的,您可以迭代数组,同时保留在每个点看到的最大值:
class Array
def my_max
max = nil # Default "max" to nil, since we haven't seen any values yet.
self.each { |x| max = x if (!x || x>max) } # Update with bigger value(s).
max # Return the max value discovered.
end
end
或者,如果您对函数式编程感兴趣,请考虑使用Enumerablereduce
方法,它概括了my_max
版本中的过程并使用三元运算符为简洁起见:
class Array
def my_max2
self.reduce(nil) { |max,x| (!max || x>max) ? x : max }
end
end
如果您正在比较整数,那么
[1,3,2].max will do the work
如果您要比较以字符串格式存储的整数,请尝试:
["1","3","2"].map(&:to_i).max
它将首先将您的字符串数组转换为 int 数组,然后应用 max 方法
如果您要经常使用这种比较,我建议您将实际数组存储为 int 格式,这样实际上可以为您节省服务器一些工作时间。
你可以简单地调用max
a = [1,2,3,4]
a.max # outputs 4
同样对于您可以做的最小值
a.min # outputs 1