2014-10-03 5 views
1

개체 배열이 있고 특성 값으로 정렬해야합니다. 정렬 할 순서는 두 번째 배열에 있습니다.두 번째 배열의 값을 사용하여 개체 배열을 정렬하는 방법

a = [ object1, object2, object3, object4] 

object1.job = 'ER' 
object2.job = 'AD' 
object3.job = 'WE' 
object4.job = 'ER' 

b = ['ER', 'ER', 'WE', 'AD'] 

가 나는 [object1/object4, object3, object2]을 반환 a 있도록 내 배열을 정렬 할 필요가있다. 내 배열 b을 정렬의 키로 사용하려면 어떻게해야합니까?

+1

'b'에 의한 주문은 모순입니다. 그것은'ER'이 그 자체 앞에 선행한다는 것을 의미합니다. – sawa

답변

4

이 작동합니다 : ER의 여러 사본이 필요하지 않습니다

sorted_a = a.sort_by { |obj| b.index obj.job } 

b 것을; WEAD 앞에 오는 것은 ER이라는 것을 나타낼 필요가 있습니다.

b = ['ER', 'WE', 'AD'] 

index 함수는 invocant에서 인수의 위치 반환

b.index 'ER' #=> 0 
b.index 'AD' #=> 2 

그리고 sort_by 방법은 어레이의 각 요소에 부속 된 블록을 실행하고 정렬 키와 같은 결과를 사용 으로.

+0

'ER'에 대한 좋은 지적. 사실, OP가주는 것은 모순입니다. 그것은'ER'이 그 자체 앞에 선행한다는 것을 의미합니다. – sawa

관련 문제