用Ruby转换Hash
我有一个简单的散列,看起来像这样:用Ruby转换Hash,ruby,hash,Ruby,Hash,我有一个简单的散列,看起来像这样: {"12"=>[1], "10"=>[1], "2"=>[1], "11"=>[1]} 键等于用户名,值等于用户ID。 现在,我想转换此哈希以返回如下数据: {"User 12"=>[Follower name], "User 10"=>[Follower name], "User 2"=>[Follower name], "User 11"=>[Follower name]} 在Ruby中最好的方法是什么?
{"12"=>[1], "10"=>[1], "2"=>[1], "11"=>[1]}
键等于用户名,值等于用户ID。
现在,我想转换此哈希以返回如下数据:
{"User 12"=>[Follower name], "User 10"=>[Follower name], "User 2"=>[Follower name], "User 11"=>[Follower name]}
在Ruby中最好的方法是什么?您可以这样做:
res = {}
hash = {"12"=>[1], "10"=>[1], "2"=>[1], "11"=>[1]}
hash.each{ |k,v| res["User #{k}"] = Follower.find(v.first).name }
res
# => {"User 12"=>Follower name, "User 10"=>Follower name, "User 2"=>Follower name, "User 11"=>Follower name}
这将就地转换哈希:
hash.values.each { | ids | ids.map! { | id | ... code to transform id to name ... } }
试试这个:
hash = {"12"=>[1], "10"=>[1], "2"=>[1], "11"=>[1]}
hash.each_with_object({}) do |(user_id, follower_ids), hash|
hash[User.find(user_id).name] = follower_ids.map { |follower_id| Follower.find(follower_id).name }
end
我使用了
User
和Follower
作为ActiveRecord
类,但这取决于您的设置。名称从何而来?当您想要获得Follower name:Follower.find(id).name时。但这并不重要。我只是想找个例子,我会根据我的需要申请。钥匙也要查一下吗?您编写了“key等于User name”,但在您的示例中,似乎不是这样。