ruby-on-rails - 从数组中提取多个键值属性

标签 ruby-on-rails ruby hash

我有一个类似于您在本文底部看到的数组(具体来说,它是从 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

最佳答案

这看起来不像嵌套哈希。它看起来像一组 FbGraph::User 实例。如果您想将它变成一个散列数组,每个散列包含 :identifier、:name 和 :picture,您可以这样做:

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

关于ruby-on-rails - 从数组中提取多个键值属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11424001/

相关文章:

arrays - 将数组的相似元素分组在一起,以便在 Perl 中立即在 foreach 中使用

mysql - 可重复生成有限制的个人 ID

ruby-on-rails - 安装 pg gem;错误 : Failed to build gem native extension

ruby-on-rails - 没有 @template.content_tag 的 Rails 助手

ruby - 如何中断命令行脚本中的循环,但仅在方法完成后才中断?

ruby-on-rails - 如何首先在 broadcasts_to 中呈现部分内容然后重定向 (AbstractController::DoubleRenderError)

ruby-on-rails - 在 OS X 10.8.5 上安装了 bundler 但 bundle -v 给出了未找到的命令

ruby-on-rails - rails 5.x : How can I add a route at runtime without overwriting original routes table?

ruby-on-rails - 如何删除非 html 标签 - CID

javascript - 如何删除用户添加的第二个哈希?