找出指定数量的数组元素是否匹配

时间:2014-10-22 07:37:06

标签: ruby

编写用于检查特定数量的数组元素是否匹配的方法的简单方法是什么。例如

["dog", "cat", "dog", "dog"].has_matching(3) 
# true

["dog", "cat", "dog", "cat"].has_matching(3)
# false

理想情况下,被比较对象的类别并不重要。

1 个答案:

答案 0 :(得分:3)

您可以向Array添加方法:

class Array
  def check_if_minimum_duplicates(min_dup)
    group_by{|el| el }.any?{|k, v| v.count >= min_dup }
  end
end

并像这样使用它:

irb(main):006:0> puts ["dog", "cat", "dog", "dog"].check_if_minimum_duplicates(3)
true
=> nil
irb(main):007:0> puts ["dog", "cat", "dog", "cat"].check_if_minimum_duplicates(4)
false
=> nil