我们有一个阵列,
a = [1,2,3,2,4,5,2]
Run Code Online (Sandbox Code Playgroud)
现在,我需要逐个获取ruby数组中每个元素的出现.所以,这里元素'1'的发生是1次."2"的出现是3次,依此类推.
之后编辑并添加了以下行,因为提交的大部分答案都误解了我的问题:
That means, I need to take the occurrence of a single element at a time.
Run Code Online (Sandbox Code Playgroud)
我怎么能算得上?
a = [1,2,3,2,4,5,2]
p a.inject(Hash.new(0)) { |memo, i| memo[i] += 1; memo }
# => {1=>1, 2=>3, 3=>1, 4=>1, 5=>1}
Run Code Online (Sandbox Code Playgroud)
您可以使用enum#reduce
[1,2,3,2,4,5,2].reduce Hash.new(0) do |hash, num|
hash[num] += 1
hash
end
Run Code Online (Sandbox Code Playgroud)
输出量
{1=>1, 2=>3, 3=>1, 4=>1, 5=>1}
Run Code Online (Sandbox Code Playgroud)