RoR数组 - 包含相同的元素 - 包括值

时间:2010-10-07 12:41:13

标签: ruby-on-rails

如何在将值附加到数组

之后计算符号值

这样

a=[]

a<<1 count of 1 is 1

a<<1 count of 1 is 2

感谢

3 个答案:

答案 0 :(得分:3)

你可以这样做:

a.select{|v| v == 1}.size

这只是一个解决方案

答案 1 :(得分:1)

有人可能会想出一个更专业的解决方案,但我会减少它

counts = [1,3,3].reduce({}) do |acc,n|
  acc.tap do |a|
    a[n] ||= 0
    a[n] += 1
  end
end

counts.each {|k,v| puts "#{k} was found #{v} times"}

(请注意,tap为ruby 1.9,并在activesupport中向后移植)

的输出将是

  

1被发现1次   3次被发现2次

答案 2 :(得分:0)

  
    

a = [1,2,3,4,5,1,2,2,3,4]

  

=&GT; [1,2,3,4,5,1,2,2,3,4]

  
    

a.uniq.each do | i |

  

&GT?; put i.to_s +'已出现'+ a.count(i).to_s +'次'

  
    

  

1出现了2次

2已出现3次

3已出现2次

4已出现2次

5已出现1次

=&GT; [1,2,3,4,5]