2012-07-11 5 views
4

필자는이 글의 맨 아래에 보이는 것과 같은 배열을 가지고 있습니다 (특히 fb_graph에서 반환 된 fb 친구 목록). 나는이 해시를 통과하고 각 레코드에서 바로 '식별자'속성을 선택하고 싶다면배열에서 다중 키 - 값 속성 추출하기

, 나는 이런 식으로 뭔가를 할 수 알고 : 내가 원하는 경우

@fb_friends.map &:identifier # returns ["123", "134",...] 

내 질문이 선택하는 어떤 각 레코드의 여러 속성을 제거합니다. 기본적으로 식별자, 이름 및 그림을 가져오고 싶습니다. 순진하게 다음과 같이하고 싶습니다.

@fb_friends.map &:identifier, :name, :picture 

물론 작동하지 않습니다. 어떻게 내가 이걸 풀 수 있을지 생각해?

[#<FbGraph::User:0x007f9ec1fd63c8 @identifier="1868", @endpoint="https://graph.facebook.com /----", @access_token="AAAFGzU8vU0gBAEK2q3WYEUJNZAczuO6UPOLqbscwvZALr1gW1ePBqpyarh0uTv6alA2YyNvIzZBcvvIBEYy4i5ulMJZCpWcZD", @cached_collections={}, @name="REMOVED", @first_name=nil, @middle_name=nil, @last_name=nil, @gender=nil, @locale=nil, @languages=[], @link=nil, @username=nil, @third_party_id=nil, @timezone=nil, @verified=nil, @about=nil, @bio=nil, @education=[], @email=nil, @interested_in=[], @political=nil, @favorite_teams=[], @quotes=nil, @relationship_status=nil, @religion=nil, @relationship=nil, @website=nil, @work=[], @sports=[], @favorite_athletes=[], @inspirational_people=[], @mobile_phone=nil, @installed=nil>, #<FbGraph::User:0x007f9ec1fda9f0 @identifier="3??1", @endpoint="https://graph.facebook.com/----", @access_token="AAAFGzU8vU0gBAEK2q3WYEUJNZAczuO6UPOLqbscwvZALr1gW1ePBqpyarh0uTv6alA2YyNvIzZBcvvIBEYy4i5ulMJZCpWcZD", @cached_collections={}, @name="Removed", @first_name=nil, @middle_name=nil, @last_name=nil, @gender=nil, @locale=nil, @languages=[], @link=nil, @username=nil, @third_party_id=nil, @timezone=nil, @verified=nil, @about=nil, @bio=nil, @education=[], @email=nil, @interested_in=[], @political=nil, @favorite_teams=[], @quotes=nil, @relationship_status=nil, @religion=nil, @relationship=nil, @website=nil, @work=[], @sports=[], @favorite_athletes=[], @inspirational_people=[], @mobile_phone=nil, @installed=nil>, #<FbGraph::User:0x007f9ec1fe5030 

답변

11

중첩 해시처럼 보이지 않습니다. 그것은 FbGraph :: User 인스턴스의 배열처럼 보입니다. 당신이 해시의 배열로 돌려하려는 경우, 각 포함 : 식별자 : 이름, 그리고 : 사진, 당신이 할 수 있습니다 :

@fb_friends.map { |f| 
    { identifier: f.identifier, name: f.name, picture: f.picture } 
} 
+0

완벽하게 작동했습니다. 고마워, 나는 질문을 배열로 업데이트 할 것이다. – pejmanjohn

1

IIRC는이 해시의 배열을 반환 할 경우 키는 것 이드 광고의 가치가있는 이름과 그림이있는 배열 :

@fb_friends.map{|fbf| [fbf.identifier, [fbf.name, fbf.picture]]}.map{|a| Hash[a]} 

{:id1 => ['name', 'picture_url'], :id2 => ['name2', 'picture_url2]}