2016-03-25 184 views
0

我试着通过#Hash.new添加散列没有成功,现在我正在尝试.merge按照有限的成功论坛。我正在尝试将#rand(1..100)添加到[0]中,而无需手动进入哈希。有任何想法吗?添加散列到散列(红宝石)

#age = Hash.new 
#email = Hash.new 
#age2 = rand(1..100) 
people = [ 
{ 
"first_name" => "Bob", 
"last_name" => "Jones", 
"hobbies" => ["basketball", "chess", "phone tag"] 
}, 
{ 
"first_name" => "Molly", 
"last_name" => "Barker", 
"hobbies" => ["programming", "reading", "jogging"] 
}, 
{ 
"first_name" => "Kelly", 
"last_name" => "Miller", 
"hobbies" => ["cricket", "baking", "stamp collecting"] 
} 
] 

people[0].each do |w| 
people.merge({:age => rand(1..100)}) 
puts "array 0 is #{w}" 
end 

puts p people 
+0

你的问题很混乱。你能提供一个你想要的输入和输出的例子吗? – Shelvacu

+0

为每个属性分散散列通常是不好的设计。另外,除非需要指定默认值,如'Hash.new(0)',否则使用'{}'而不是'Hash.new'。 – tadman

+0

输出 - 人= [{ “first_name的”=> “鲍勃”, “姓氏”=> “琼斯”, “年龄”=>兰特(1..100), “爱好”=> [“篮球”,“国际象棋”,“电话标签”] }, – whatabout11

回答

2

假设这是您的结构,你这样做:

people.each do |person| 
    person['age'] = rand(1..100) 
end 

你最好要使用符号式按键来代替。这将意味着他们宣称这样的:

people = [ 
    { 
    first_name: "Bob", 
    last_name: "Jones", 
    ... 
    }, 
    ... 
] 

这样,你访问他们喜欢people[0][:first_name]。您在哈希中合并使用:age的符号密钥。请记住,Ruby中的字符串和符号并不等同,即'bob' != :bob。您应该使用这样的常规结构的符号,更多任意数据的字符串。

+0

很好的答案和简单,谢谢! – whatabout11