2012-08-16 4 views
1

다음 배열에서 id = 71 인 제품의 위치는 어떻게 찾습니까? 이 개체는 위의 배열에 1을 수 0과 연관되지 않는다는 것을중첩 된 배열에서 객체의 위치 찾기

[[[#<Product id: 71>, #<BigDecimal:x>], 0], [[#<Product id: 73>, #<BigDecimal:x>], 1]] 

또는 내가 @product = Product.find(71)이있는 경우, 어떻게 다음 찾을까요?

답변

4

당신은 (여기에 문자 대신 사용자 정의 개체를 사용하여) 블록 인수의 해체와 함께, 블록 Array#index를 사용할 수 있습니다

오히려 인덱스보다 특정 요소에 관심이 있다면
arr = [[[:a, :b], 5], [[:c, :d], 7]] 
# => [[[:a, :b], 5], [[:c, :d], 7]] 
arr.index{|((a, b), c)| c == 7} 
# => 1 
arr.index{|((a, b), c)| b == :a} 
# => nil 
arr.index{|((a, b), c)| b == :b} 
# => 0 

, 그냥 find을 대신 사용 index (차단 인수는 동일합니다).

관련 문제