0. やりたいこと
group_by
で返されるhashのキーをカスタマイズしたい。
1. よくあるサンプル
これだと返却されるhashのキーを自分で決めることができない
(1..5).group_by {|x| x%2}
=> {1=>[1,3,5], 0=>[2, 4]}
2. 解決案
group_by
は配列の要素をグルーピングする。
↓
グルーピング=「評価した結果に応じて仕分ける」。
↓
評価結果が返却されるhashのキーとなる。
↓
要するに評価された配列の要素が評価結果のキーごとに分類される。
↓
キーを自分で決めたければ評価するメソッドを自分で作るしかない。
def evaluate_num(val)
return "RED" if val <= 2
return "BLUE" if val > 2
end
(1..5).group_by {|x|
evaluate_num(x)
}
=> {"RED"=>[1,2], "BLUE"=>[3, 4, 5]}