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
4

2 に答える 2

11

ネストされたハッシュのようには見えません。FbGraph::User インスタンスの配列のように見えます。:identifier、:name、:picture を含むハッシュの配列に変換したい場合は、次のようにします。

@fb_friends.map { |f|
  { identifier: f.identifier, name: f.name, picture: f.picture }
}
于 2012-07-11T00:53:27.813 に答える
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]}
于 2012-07-11T00:54:12.553 に答える