比较数组中的内容

时间:2012-10-15 04:49:57

标签: ruby arrays

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

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

4 个答案:

答案 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