计算多少次返回true .include?红宝石

时间:2019-08-18 23:39:37

标签: ruby hash

我正在构建一个函数,该函数需要检查哈希对象中的值是否包含特定的单词/字符串。

如果所有值都包括给定的真或假列表的特定短语,而我只需要输出|key, value|个数,我就可以得到我的true值。

def example(array)
  array.each do |company|
    company.each do |key, value|
      val_count = value["email_hosts"].include?("gmail")
      puts gmail_count
    end
  end
end

example(request)

此输出:

false
false
true
true
false
true
false
false
false
false
false
false

对于三个true,我需要输出为3。

谢谢。

1 个答案:

答案 0 :(得分:1)

这可以通过使用count对每个公司中匹配的条目进行计数,然后将它们sum一起计数来完成。

companies = [
  { this: { "email_hosts" => "hotestmail" } },
  {
    this: { "email_hosts" => "gmail" },
    that: { "email_hosts" => "gmail.com" },
    other: { "email_hosts" => "gmail.com" }
  }
]

puts companies.sum { |company|
  company.count { |_,host|
    host["email_hosts"].include?("gmail")
  }
}