Lucas Caton

Contar a frequência de objetos em um array usando Ruby

Por Lucas Caton

Às vezes precisamos contabilizar qual a frequência de objetos em um array usando Ruby.

Por exemplo, um array "dog", "dog", "cat" tem dois elementos "dog" e um "cat". Para transformar isso em um hash com os totais, existem as seguintes alternativas, dependendo da versão do Ruby que você esteja utilizando:

Ruby 2.7 ou superior

ruby
["dog", "dog", "cat"].tally
# => { "dog" => 2, "cat" => 1 }

Ruby 2.2 até 2.6

ruby
words = ["dog", "dog", "cat"]

Hash[words.group_by(&:itself).map { |word, words| [word, words.size] }]
# => { "dog" => 2, "cat" => 1 }

Ruby 2.1 ou mais antigo

ruby
Hash[words.group_by { |w| w }.map { |word, words| [word, words.size] }]
# => { "dog" => 2, "cat" => 1 }

Se você achou isso útil, deixe um comentário abaixo me contanto! ;)
Tags:
Post atualizado em 12/30/2019, 7:00:00 AM