2013-05-16 4 views
1

나는이 같은 해시의 배열을 가지고 :해시 배열에서 키 값을 가져 옵니까?

[ 100005913544738, 100005934513815, 100005954493955 ] 

내가 루비 1.9.3을 실행 해요 :

[ 
    {"name"=>"Bob Jones", "id"=>"100005913544738"}, 
    {"name"=>"Jimmy Smith", "id"=>"100005934513815"}, 
    {"name"=>"Abe Lincoln", "id"=>"100005954493955"} 
] 

내가 궁극적으로 그냥이 같은 배열에 그 아이디의,합니다.

답변

7
a = [{"name"=>"Bob Jones", "id"=>"100005913544738"}, 
    {"name"=>"Jimmy Smith", "id"=>"100005934513815"}, 
    {"name"=>"Abe Lincoln", "id"=>"100005954493955"}] 

a.map{|h| h['id'].to_i} 
# => [100005913544738, 100005934513815, 100005954493955] 

Enumerable#map은 익숙한 매우 편리한 방법입니다.

원래 배열의 생성을 제어 할 수 있다면 해시 키로 문자열 대신 Symbols (예 : :name:id)를 사용하는 것이 루비와 유사하다는 점도 유의해야합니다. 이를 위해 many reasons이 있습니다.

0
h = [ 
    {"name"=>"Bob Jones", "id"=>"100005913544738"}, 
    {"name"=>"Jimmy Smith", "id"=>"100005934513815"}, 
    {"name"=>"Abe Lincoln", "id"=>"100005954493955"} 
] 

h.map{|i| i.fetch("id").to_i} 
#=> [100005913544738, 100005934513815, 100005954493955] 
관련 문제