【发布时间】:2012-04-23 12:49:22
【问题描述】:
我对循环遍历数组时的更新方式感到困惑。这是一个显示行为的虚构示例。
people = [{"name"=>"Edward", "age" =>"43", "height"=>"tallish"},
{"name"=>"Ralph", "age" =>"40", "height"=>"medium heigth"},
{"name"=>"George", "age" =>"35", "height"=>"very tall"},
{"name"=>"Mark", "age" =>"25", "height"=>"short"}]
numbers = ["1","3","26"]
new_array = []
numbers.each do |number|
people.each do |person|
person["name"] = person["name"] +" "+ number
new_array << person
end
end
new_array 的末尾是
[{"name"=>"Edward 1 3 26", "age"=>"43", "height"=>"tallish"},
{"name"=>"Ralph 1 3 26", "age"=>"40", "height"=>"medium heigth"},
{"name"=>"George 1 3 26", "age"=>"35", "height"=>"very tall"},
{"name"=>"Mark 1 3 26", "age"=>"25", "height"=>"short"},
{"name"=>"Edward 1 3 26", "age"=>"43", "height"=>"tallish"},
{"name"=>"Ralph 1 3 26", "age"=>"40", "height"=>"medium heigth"},
{"name"=>"George 1 3 26", "age"=>"35", "height"=>"very tall"},
{"name"=>"Mark 1 3 26", "age"=>"25", "height"=>"short"},
{"name"=>"Edward 1 3 26", "age"=>"43", "height"=>"tallish"},
{"name"=>"Ralph 1 3 26", "age"=>"40", "height"=>"medium heigth"},
{"name"=>"George 1 3 26", "age"=>"35", "height"=>"very tall"},
{"name"=>"Mark 1 3 26", "age"=>"25", "height"=>"short"}]
每个人出现 3 次,这是我所期望和想要的。但他们的名字每次都一样。我第一次希望名字是"Edward 1",然后是"Edward 1 3",最后是"Edward 1 3 26"
这里发生了什么?我认为循环会将每个单独的哈希附加到 new_array 上,而不是 3 个都一样。
【问题讨论】:
-
你真正想要什么输出?可能有一个简单的非迭代解决方案。
-
@Mark Thomas - 我真的希望每个带有 name 元素的哈希都更改了几次。