如何在ruby中将数组中的值相互比较?
我想比较数组中的值来检查数组的最大值。
答案 0 :(得分:5)
你想找到最大值吗?它已经完成了。
[1, 5, 3].max # => 5
答案 1 :(得分:1)
Ruby数组(或包含Enumerable模块的任何内容)都有max
method:
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
或者,如果您对函数式编程感兴趣,请考虑使用Enumerable reduce
method,它会在my_max
版本中概括该过程并使用ternary operator来简化:
class Array
def my_max2
self.reduce(nil) { |max,x| (!max || x>max) ? x : max }
end
end
答案 2 :(得分:1)
如果要比较整数,那么
[1,3,2].max will do the work
如果要比较以字符串格式存储的整数,请尝试:
["1","3","2"].map(&:to_i).max
首先将您的字符串数组转换为int数组,并应用max方法
如果您经常使用这种比较,我建议您以int格式存储实际数组,这样它实际上可以为您节省一些工作时间。
答案 3 :(得分:0)
您只需调用max
a = [1,2,3,4]
a.max # outputs 4
另外,您可以做最小值
a.min # outputs 1