Ruby使用某些键散列到另一个散列

时间:2015-01-07 07:40:20

标签: ruby-on-rails ruby hash

我有这样的哈希

[{"user_id"=>"4672046155508aafb4d01bca27cca8c6", "email"=>"xxxxxxxxxx@gmail.com", "sport"=>[nil]}, {"user_id"=>"007ba6fd74b3ef3c12734ddd0f2280ae", "email"=>"xxxxxxxx@yahoo.com", "sport"=>[nil, nil, nil, nil]}, {"user_id"=>"0085e4d74738a384e10042b62acb56e2", "email"=>"xxxxxxxxxx@gmail.com", "sport"=>[nil, nil, nil]}]

我需要一个包含所有电子邮件的哈希,怎么做?...每当我使用

  users[:email]

它给出的错误无法将符号转换为整数

2 个答案:

答案 0 :(得分:1)

你可以这样做

hash_array = [{"user_id"=>"4672046155508aafb4d01bca27cca8c6", "email"=>"xxxxxxxxxx@gmail.com", "sport"=>[nil]}, {"user_id"=>"007ba6fd74b3ef3c12734ddd0f2280ae", "email"=>"xxxxxxxx@yahoo.com", "sport"=>[nil, nil, nil, nil]}, {"user_id"=>"0085e4d74738a384e10042b62acb56e2", "email"=>"xxxxxxxxxx@gmail.com", "sport"=>[nil, nil, nil]}]
hash_array.map{ |hash| hash["email"] }

它将返回所有电子邮件的数组

答案 1 :(得分:0)

它不是哈希,它是一个哈希数组。要访问第一个哈希email,您可以执行以下操作:

users.first['email']