简单的ruby数组最小整数?

时间:2014-04-23 19:08:53

标签: ruby

这是我的数组:array = ["1", "Hel", "6", "3", "lo" ]我想输出数组中最小的数字。那我想输出数组中最大的数字?我该如何实现这一目标?谢谢!

6 个答案:

答案 0 :(得分:3)

这取决于您希望如何处理不容易解析为数字的字符串元素。喜欢" Hel"和" lo"。

如果你这样做:

array.map {|x| Integer(x) rescue nil }.compact.min
array.map {|x| Integer(x) rescue nil }.compact.max 

然后你会忽略那些,这可能是正确的,假设你没有理由考虑" Hel"和" lo"有数值。

答案 1 :(得分:1)

numbers = array.select { |x| x[/^-?\d+$/] }.map(&:to_i)
# => [1, 6, 3] 
numbers.min
# => 1
numbers.max
# => 6

答案 2 :(得分:1)

使用负数的另一种变体

smalles, largest = 
["1", "Hel", "6", "3", "lo","-9" ].select { |x| x[/^-?\d+$/] }.minmax_by(&:to_i)
  

最小的#=> -9最大#=> 6

答案 3 :(得分:0)

smallest, largest =
["1", "Hel", "6", "3", "lo" ].reject{|s| s =~ /\D/}.minmax_by(&:to_i)

smallest # => "1"
largest  # => "6"

答案 4 :(得分:0)

另一种方式:

array.join(',').scan(/-?\d+/).minmax_by(&:to_i)
  #=> ["-4", "6"]

答案 5 :(得分:0)

我们可以使用unicode [[:digit:]]代替编写正则表达式 。array.join( '')扫描(/ [[:位:]] /)minmax_by(安培;:to_i)。