说我有这样的数组:
["white", "red", "blue", "red", "white", "green", "red", "blue", "white", "orange"]
我想通过数组并创建一个新数组,其中包含每种颜色以及它在原始数组中出现的次数。
所以,在新阵列中,它会报告“白色”出现3次,“蓝色”出现2次等等......
我该怎么做呢?
答案 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]}