2011-12-14 3 views
0

코드 :루비 1.9, 배열을 반환

@albums = @genres.each_with_index { |item,key| 
    if item.keys.include?('Albums') 
    break 
    end 
} 

이합니다 (@genres 거대한 다차원 JSON 응답은 객체)

나는 이것이 이해 할수 앨범 배열을 반환한다 아플 때 코드 작성을 위해 얻는 것 ... 또는 단순히 일을 잘못하는 것 ... 어느 쪽이든, 어떤 도움이 많이 감사합니다! |

@albums = @genres.detect { |item| item.key?('Albums') }['Albums'] 

편집 :

답변

1

난 당신이 #detect (또는 동의어 #find)를 원한다고 생각 또한 특정 값을 깨고 반환하려는 경우 break에 인수를 제공 할 수 있습니다 (return처럼).

+0

[ '앨범'] 항목이 아니어야합니까? 또한 맵은 배열이 아니기 때문에 해시로 제대로 작동하는지 감지합니다. 내 요점은 어떤 열거 형 메서드를 사용하고 있는지 조심해야한다. –

+0

'@ genres'는 Array 였으므로'detect'는 해시를 반환하고, 그 다음 해시에 키 조회를 연결합니다. OP는 each_with_index를 사용했지만 키를 사용하지 않았습니다. 'item.key? ('Albums')'는 'item'에 저장된 값이 'nil'인 경우에도 'Albums'라는 키가 있는지 묻는 올바른 방법입니다. – d11wtq

+0

"거대한 다차원 json 응답"이라는 문구가 해시 인 것으로 해석되었으므로 명확한 설명이 필요합니다. –

관련 문제