我正在使用Facebook API提取我所有朋友的列表。 但是,我不想将结果存储在数据库中。我只想获取我返回的结果的哈希值并对结果执行选择。
但是,我很难做到这一点...
我得到这样的结果...
[{"name"=>"John Smith", "id"=>"12345"}, {"name"=>"Jane Doe", "id"=>"23456"}, {"name"=>"Samuel Jackson", "id"=>"34567"}, {"name"=>"Kate Upton", "id"=>"45678"}]
它们存储在@friends
我的选择是:
@friends.select{|key, hash| hash["name"] == "John Smith" }
但我不断收到错误"nil:NilClass 的未定义方法'[]'"
两个问题:1. 如何获取哈希的搜索以返回 John Smith(无需存储在数据库中,也不修改初始 Facebook API 查询)2. 是否可以使用"喜欢"而不是"==",以便返回包含单词的结果?
谢谢!
你得到"undefined method [] for nil:NilClass"
,因为你使用的方法选择错误。 尝试这样做:
@friends.select{ |hash| hash["name"] == "John Smith" }
所以我相信这回答了你的第一个问题。您不需要在数据库中存储任何内容,而是在实例变量中存储 @friends
,然后正确使用 select。
关于第二个问题,我认为您应该研究正则表达式,因为这实际上取决于您所说的"喜欢"是什么意思,但是如果您说您想要:
它返回包含单词的结果?
好吧,如果你想检查一个特定的单词(比如说史密斯),你可以选择为:
@friends.select{ |hash| hash["name"].include? "Smith" }
这将为您提供数组上的所有元素,其名称包含单词 Smith。