2014-11-24 4 views
1

배열의 하위 배열로 나누고 자하는 해시 배열이 있습니다.배열을 하위 배열로 분할

분할에 대한 트리거는 다음과 같습니다 그룹

master = [] 
master << { id: 1, group: "Brown", name: "Fred" } 
master << { id: 2, group: "Brown", name: "May" } 
master << { id: 3, group: "Brown", name: "Brian" } 
master << { id: 4, group: "Black", name: "Sue" } 
master << { id: 5, group: "Orange", name: "Helen" } 
master << { id: 6, group: "Orange", name: "Peter" } 
master << { id: 7, group: "Red", name: "Grace" } 
master << { id: 8, group: "Red", name: "Michael" } 
master << { id: 9, group: "Red", name: "Paul" } 

이를이나 내가 전에 코볼 년처럼 제어 - 휴식 형 루프를 사용해야 할 수있는 빠른 레일 기능이 있나요 .. . :

답변

2

당신은 Enumerable.group_by 기능을 사용하여 그룹에 데이터를 원하는 것입니다.

master.group_by { |item| item[:group] } 

{ 
    "Red" => [{ id: 7, group: "Red", name: "Grace" },...], 
    "Black" => ..., 
    ... 
} 
1

master.group_by{|h| h[:group]}

+0

놀랍게도 효율적으로 생산하는 것입니다. – Dercni

관련 문제