1

如何在 ruby​​ 中将数组中的值相互比较?

我想比较数组中的值来检查数组的最大值。

4

4 回答 4

5

你想找到最大值吗?它已经完成了。

[1, 5, 3].max # => 5
于 2012-10-15T04:51:34.913 回答
1

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
于 2012-10-15T04:51:54.923 回答
1

如果您正在比较整数,那么

[1,3,2].max will do the work

如果您要比较以字符串格式存储的整数,请尝试:

["1","3","2"].map(&:to_i).max

它将首先将您的字符串数组转换为 int 数组,然后应用 max 方法

如果您要经常使用这种比较,我建议您将实际数组存储为 int 格式,这样实际上可以为您节省服务器一些工作时间。

于 2012-10-15T11:28:47.983 回答
0

你可以简单地调用max

a = [1,2,3,4]
a.max # outputs 4

同样对于您可以做的最小值

a.min # outputs 1
于 2012-10-15T04:54:02.250 回答