Contar a frequĂȘncia de objetos em um array usando Ruby
Ă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! đ