我有一個陣列
data = [{:user=>1399, :job=>10270}, {:user=>2614, :job=>10270},
{:user=>3112, :job=>10270}, {:user=>2614, :job=>10271},
{:user=>1455, :job=>10271}]
其中 1399、2614、3112、1455 是用戶 ID,10270、10271 是作業 ID。
我想顯示每個用戶的作業數,而不管作業 ID。
預期結果:
1399 => 1
2614 => 2 # because 2614 has 2 two jobs
3112 => 1
1455 => 1
我需要這個在陣列中
uj5u.com熱心網友回復:
您可以通過以下方式提取用戶 ID map,然后讓 Ruby 通過以下方式計算出現次數tally:
data.map { |h| h[:user] } #=> [1399, 2614, 3112, 2614, 1455]
.tally #=> {1399=>1, 2614=>2, 3112=>1, 1455=>1}
uj5u.com熱心網友回復:
首先group_by是user鍵,然后計算每組中的元素數:
data = [{:user=>1399, :job=>10270}, {:user=>2614, :job=>10270}, {:user=>3112, :job=>10270}, {:user=>2614, :job=>10271}, {:user=>1455, :job=>10271}]
data.group_by {|e| e[:user]}
.map{|id, a| [id, a.size]}
.to_h
# => {1399=>1, 2614=>2, 3112=>1, 1455=>1}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/492369.html
