在ruby数组中搜索

时间:2014-12-18 12:04:08

标签: ruby arrays

我有一个填充了0,1,3和4的数组,并想要检查数组内部,这样一旦找到一定数量的4,就会出现错误的声明。

5 个答案:

答案 0 :(得分:3)

使用count方法。

alist.count(4) >= n
# => true or false

n将是您要检查的特定号码。

答案 1 :(得分:0)

文档是开始回答这类问题的最佳位置,ruby在ArrayEnumerable上有一套非常丰富的功能

def enough_4s?(array, how_many)
  array.count(4) >= how_many 
end

array = [1,1,1,2,3,4,4,4]
enough_4s?(array, 3)
#=> true
enough_4s?(array, 4)
#=> false

答案 2 :(得分:0)

[0,1,3,4,3].­count(4) > 2 => false

(例如2是预期的数量)

答案 3 :(得分:0)

如果目标是在找到足够的4s后立即停止搜索,请使用eachfind或同等内容,returnbreak而不是count。例如:

n = 2
([0,1,3,4]*5).find do |i|
  n -= 1 if i == 4
  break false if n == 0
end
# false

答案 4 :(得分:0)

另一种解决方案,可以尽快停止使用any?

def has_at_least?(arr, val, min)
  arr.any? do |i|
    i == val && (min -= 1).zero?
  end
end

has_at_least?([0,1,3,4]*5, 4, 2)
# => true

has_at_least?([0,1,3,4]*5, 4, 7)
# => false