我有一个简单的哈希,看起来像这样:
{"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中最好的方法是什么?
答案 0 :(得分:2)
试试这个:
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
个类,但这取决于您的设置。
答案 1 :(得分:1)
这将原位转换你的哈希:
hash.values.each { | ids | ids.map! { | id | ... code to transform id to name ... } }
答案 2 :(得分:-1)
您可以这样做:
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}