【发布时间】:2014-05-11 22:54:55
【问题描述】:
以下代码的目标是生成一个哈希,其中的键是 :id 字段
original_array 中的哈希值,以及 original_array 中具有 :id 的所有元素的值。
original_array = [
{:id => '123', :name => 'test'},
{:id => '123', :name => 'another test'},
{:id => '456', :name => 'yet another test'}
]
new_hash = {}
original_array.each do |a|
new_hash[a[:id]] = original_array.select {|x| x[:id] == a[:id]}
end
我的代码可以做到这一点,但必须有一些更好的方法来做到这一点,理想情况下可以一步创建散列。如果有人可以建议和解释一个(希望我可以提高我对这类事情的理解),那么将不胜感激。
【问题讨论】:
-
您的局部变量
a具有误导性。这通常用于数组。对于哈希,您应该使用h。 -
注明。大概是因为 original_array 中的每个元素都是一个哈希,而我根据 original_array 的类选择了字母。