计算元素在数组中出现的次数

Rob*_*old 3 ruby arrays count

我有一个包含元素的数组[50, 20, 20, 5, 2],称为coins_used.

我需要计数然后输出硬币在数组中出现的次数。使用coin_used x frequency.

无论如何,我可以计算元素在数组中出现的次数,输出需要完全像这样:

50x1,20x2,5x1,2x1

最简单的方法是如何做到这一点?

fal*_*tru 5

使用 Array#uniq,您可以获得数组的唯一元素。并且Array#count将返回在数组中的项目数。

通过使用加入映射数组,,您可以获得您想要的:

a = [50,20,20,5,2]
a.uniq.map { |x| "#{x}x#{a.count(x)}" }.join(',')
# => "50x1,20x2,5x1,2x1"
Run Code Online (Sandbox Code Playgroud)

更新Hash用于计数的更有效的版本。

a = [50,20,20,5,2]
freq = Hash.new(0)
a.each { |x| freq[x] += 1 }
freq.map{ |key, value| "#{key}x#{value}" }.join(',')
# => "50x1,20x2,5x1,2x1"
Run Code Online (Sandbox Code Playgroud)