Count occurrences
You can use Enumerable#tally to get a hash of element counts
["apple", "banana", "apple", "orange", "banana"].tally
=> {"apple"=>2, "banana"=>2, "orange"=>1}
We can even make it work for nested arrays
outfits = [
["Red Shirt"],
["Red Shirt", "Blue Pants"],
["Blue Pants"],
["Red Shirt"],
]
outfits.tally.map { |k, v| [*k, v] }
=>
[
["Red Shirt", 2],
["Red Shirt", "Blue Pants", 1],
["Blue Pants", 1]
]
Tweet