2016-06-03 1 views
0

와 I는 상점의 개장 시간을 나타내고로서 저장 배열있다 : I 위의 그룹 배열되도록이 상황에서레일 4 : GROUP_BY 2 개 변수

schedule = [ [[mon_open, 9], [mon_close, 5]], 
      [[tues_open, 11], [tues_close, 7]], 
      [[wed_open, 9], [wed_close, 5]], 
      [[thur_open,9], [thur_close, 5]], 
      [[fri_open, 11], [fri_close, 7]] ] 

싶습니다 예 [[mon_open, 9],[mon_close, 5]], [[wed_open, 9],[wed_close, 5]][[thur_open,9],[thur_close, 5]] 함께 그룹화 될 것이다 ..

및 similary [[tues_open, 11],[tues_close, 7]][[fri_open, 11],[fri_close, 7]] 함께 그룹화 될 것이다.

기본적으로 같은 개폐 시간으로 요일을 그룹화하려고합니다. 간단하게 할 수 있습니까?

답변

1

작품별로 길을 선택하는 방법은 키에 사용할 것을 선택하는 것이므로, 예를 들어 이와 같은 것이 원하는대로해야합니다. 여기

블록이 당신이 열거 한 두 가지 요소 배열의 각각의 마지막 요소의 배열을 반환

는 (나는 당신은 문자열을 사용할 수, 심볼 등, "mon_open"변환.

schedule = [ [[:mon_open, 9], [:mon_close, 5]], 
      [[:tues_open, 11], [:tues_close, 7]], 
      [[:wed_open, 9], [:wed_close, 5]], 
      [[:thur_open,9], [:thur_close, 5]], 
      [[:fri_open, 11], [:fri_close, 7]] ] 


grouped = schedule.group_by { |i| [i[0].last, i[1].last]} 
puts grouped 

나가는 것은 이쪽

{[9, 5]=>[[[:mon_open, 9], [:mon_close, 5]], [[:wed_open, 9], [:wed_close, 5]], [[:thur_open, 9], [:thur_close, 5]]], [11, 7]=>[[[:tues_open, 11], [:tues_close, 7]], [[:fri_open, 11], [:fri_close, 7]]]}