我相信之前已经在一个稍微不同的背景下提出过这个问题,并且我已经看到了一些与此类似的例子的答案 - 但似乎没有什么比这更合适。
我有一系列电子邮件地址:
@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}}让我失望。但是我已经玩过Hash
,inject
,update
,merge
,collect
并且没有运气生成这种类型的动态< / em>需要根据map
数组中的条目数创建的哈希。
有没有人对如何解决此问题有任何建议?
答案 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} }