我有一个格式为 JSON 的
{body => ["type"=>"user"...], ["type"=>"admin"...]}
我想按类型对对象进行计数,但我不想将数组迭代三次(那是我有多少个不同的对象),所以这行不通:
@user_count = json["body"].count{|a| a['type'] == "user"}
@admin_count = json["body"].count{|a| a['type'] == "admin"}
...
是否有一种无需执行 .each
block 和使用 if 语句即可计算对象类型的智能方法?
最佳答案
你可以使用 each_with_object
使用 type => count
对创建哈希:
json['body'].each_with_object(Hash.new(0)) { |a, h| h[a['type']] += 1 }
#=> {"user"=>5, "admin"=>7, ...}
关于ruby - 在一次迭代中计算数组对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31242798/