input = [
{:price=>100.0, :size=>'small', :description=>'some description 1'},
{:price=>100.0, :size=>'large', :description=>'some description 2'},
{:price=>100.0, :size=>'small', :description=>'some description 3'},
{:price=>100.0, :size=>'large', :description=>'some description 4'},
{:price=>100.0, :size=>'small', :description=>'some description 5'},
{:price=>100.0, :size=>'small', :description=>'some description 6'}
]
input.group_by { |e| e[:size] }
당신은 요소 돌연변이 Hash#delete
을 사용하여, 해시의 크기를 포함 할 수 없습니다 결과를 고려 여부 : 난 당신이 Enumberable#group_by
찾고있는 생각
input.group_by { |e| e.delete :size }
#⇒ {
# "large" => [
# [0] {
# :description => "some description 2",
# :price => 100.0
# },
# [1] {
# :description => "some description 4",
# :price => 100.0
# }
# ],
# "small" => [
# [0] {
# :description => "some description 1",
# :price => 100.0
# },
# [1] {
# :description => "some description 3",
# :price => 100.0
# },
# [2] {
# :description => "some description 5",
# :price => 100.0
# },
# [3] {
# :description => "some description 6",
# :price => 100.0
# }
# ]
# }
고마워, 그게 내가 찾고 있던 바로 그거야! – Minato
@Minato 'price','size' 및'description'에 대한 접근 자 메서드를 사용하여 목록 항목에 적절한 클래스를 사용하고자 할 수 있습니다. 그러면'group_by (& : size)'를 쓸 수 있습니다. – Stefan
잘 알고 있습니다! 그러나이 양식은 관련된 여러 변환으로 인해 목록 항목이 취하는 여러 양식 중 하나 일 뿐이므로 지금은 해시를 유지할 것입니다. – Minato