创建匹配键和增量值的哈希值

Bit*_*ise 0 ruby ruby-on-rails

我有一个巨大的数组,列出了创建对象的星期几,所以我最终得到了一个类似于以下内容的数组:

["wednesday", "thursday", "friday"] 除了它包含250,000个元素.

我想要做的是一个新的哈希,它将匹配键并增加值,所以结果如下:

{"wednesday": 250, "thursday": 600, "saturday": 120}

我怎样才能实现这个结果?

这是我目前的代码:

days = []

Invitation.all.each do |invitation|
  day = invitation.created_at.strftime("%A")
  days.push(day)
end

days
Run Code Online (Sandbox Code Playgroud)

max*_*ner 6

你可以这样做:

Invitation.all.reduce(Hash.new(0)) do |memo, invitation|
  memo[invitation.created_at.strftime("%A")] += 1
  memo
end
Run Code Online (Sandbox Code Playgroud)

Hash.new(0) 制作一个默认值为0的哈希.这是从数组中获取计数的通用方法