2012-07-11 13 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 2012-07-11 01:10:38

1

IIRC將返回哈希數組,其中的關鍵在於成爲具有名稱和圖片的數組ID值:

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

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