Ruby:使用默认键+数组值创建哈希值

时间:2009-09-23 19:44:32

标签: ruby arrays hash

我相信之前已经在一个稍微不同的背景下提出过这个问题,并且我已经看到了一些与此类似的例子的答案 - 但似乎没有什么比这更合适。

我有一系列电子邮件地址:

@emails = ["test@test.com", "test2@test2.com"]

我想从这个数组中创建一个哈希,但它必须如下所示:

input_data = {:id => "#{id}", :session => "#{session}", 
              :newPropValues => [{:key => "OWNER_EMAILS", :value => "test@test.com"} , 
                                 {:key => "OWNER_EMAILS", :value => "test2@test2.com"}]

我认为哈希内部Array的{​​{1}}让我失望。但是我已经玩过Hashinjectupdatemergecollect并且没有运气生成这种类型的动态< / em>需要根据map数组中的条目数创建的哈希。

有没有人对如何解决此问题有任何建议?

1 个答案:

答案 0 :(得分:8)

所以基本上你的问题是这样的:

拥有这个数组:

emails = ["test@test.com", "test2@test2.com", ....]

你想要一个像这样的哈希数组:

output = [{:key => "OWNER_EMAILS", :value => "test@test.com"},{:key => "OWNER_EMAILS", :value => "test2@test2.com"}, ...]

一种解决方案是:

emails.inject([]){|result,email| result << {:key => "OWNER_EMAILS", :value => email} }

更新:当然我们可以这样做:

emails.map {|email| {:key => "OWNER_EMAILS", :value => email} }