[英]How can I get the number of instances of a value in a Rails array?
說我有這樣的數組:
["white", "red", "blue", "red", "white", "green", "red", "blue", "white", "orange"]
我想通過數組創建一個新數組,其中包含每個顏色以及它在原始數組中出現的次數。
因此,在新陣列中,它會報告“白色”出現3次,“藍色”出現2次等等......
我該怎么做呢?
更好地返回哈希...
def arr_times(arr)
arr.inject(Hash.new(0)) { |h,n| h[n] += 1; h }
end
counts = Hash.new(0)
colors.each do |color|
counts[color] += 1
end
result = {}
hash = array.group_by{|item| item}.each{|key, values| result[key] = values.size}
p result
我看到你用ruby-on-rails標記了這個問題。
如果這是數據庫模型/列(例如,具有顏色屬性的用戶模型),則應該在DB中進行計算:
User.count(:all,:group=>:color).sort_by {|arr| -arr[1]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.