如何获取Rails数组中值的实例数?

时间:2010-02-22 19:43:56

标签: ruby-on-rails ruby arrays sorting

说我有这样的数组:

["white", "red", "blue", "red", "white", "green", "red", "blue", "white", "orange"]

我想通过数组并创建一个新数组,其中包含每种颜色以及它在原始数组中出现的次数。

所以,在新阵列中,它会报告“白色”出现3次,“蓝色”出现2次等等......

我该怎么做呢?

4 个答案:

答案 0 :(得分:6)

更好地返回哈希...

def arr_times(arr)
  arr.inject(Hash.new(0)) { |h,n| h[n] += 1; h }
end

答案 1 :(得分:4)

counts = Hash.new(0)
colors.each do |color|
    counts[color] += 1
end

答案 2 :(得分:1)

result = {}
hash = array.group_by{|item| item}.each{|key, values| result[key] = values.size}
p result

答案 3 :(得分:1)

我看到你用ruby-on-rails标记了这个问题。

如果这是数据库模型/列(例如,带有颜色属性的用户模型),您应该在数据库中进行计算:

 User.count(:all,:group=>:color).sort_by {|arr| -arr[1]}