我有这个哈希数组:
[
{"name": "John doe","job": "construction"},
{"name": "mary","job": "cook"}
...
]
我应该算一下这个名字有多少人。如果有五个"mary"
,我应该5
。
任何帮助都将不胜感激。
答案 0 :(得分:0)
你可以这样做:
name_count = Hash.new(0) # default count of same name: 0
users = [
{"name": "John doe","job": "construction"},
{"name": "mary","job": "cook"}
]
users.each do |user|
name_count[user[:name]] += 1
end
puts name_count
答案 1 :(得分:0)
根据您的匹配具体的具体情况,以下内容将对" Mary" s进行不区分大小写的匹配,假设users
包含您问题中的数组。
users.count { |user| user['name'] =~ /mary/i }
请参阅Enumerable#count的文档。第三种形式将采用一个块,该块将导致块返回true的项目数。
在我的示例中,我们正在访问每个哈希的'name'
密钥,并将其与针对正则表达式/mary/
的不区分大小写的匹配进行比较。 The =~
operator返回第一个匹配的整数值(真值)或nil
如果不匹配则为假值。
希望这可以通过文档回答您的问题和答案的组成部分。