How to count Ruby Array items

While working in Ruby, I often find myself trying to get a count of the number of times each item appears in an array. Below, I’ll show you how to create a Hash that iterates through each item in the array and counts the number of occurrences.

We have an array of animals that we want to count.

animals = ["tiger",
           "tiger",
           "lion",
           "dog",
           "cat",
           "mouse",
           "bear",
           "frog",
           "tiger",
           "lion",
           "frog",
           "fish",
           "cat",
           "dog",
           "cat"
          ]

We can count them up by creating a new Hash.

animal_count = Hash.new(0)

Next, we want to iterate through the animals Array and set the animal_count Key as the animal name & the animal_count Value as the counter.

animals.each { |animal| animal_count[animal] += 1 }

For each animal in animals, we’ve either created a new Key / Value pair in animal_count or incremented the Value corresponding to the animal Key.

puts animal_count
#=> {"tiger"=>3, "lion"=>2, "dog"=>2, "cat"=>3, "mouse"=>1, "bear"=>1, "frog"=>2, "fish"=>1}

One thought on “How to count Ruby Array items