我相信之前在一个稍微不同的背景下已经被问过/回答了,我已经看到了一些与此类似的例子的答案 - 但似乎没有任何东西完全适合.
我有一系列的电子邮件地址:
@emails = ["test@test.com", "test2@test2.com"]
Run Code Online (Sandbox Code Playgroud)
我想从这个数组中创建一个哈希,但它必须如下所示:
input_data = {:id => "#{id}", :session => "#{session}",
:newPropValues => [{:key => "OWNER_EMAILS", :value => "test@test.com"} ,
{:key => "OWNER_EMAILS", :value => "test2@test2.com"}]
Run Code Online (Sandbox Code Playgroud)
我认为哈希Array的Hash内部让我失望.但我周围玩inject,update,merge,collect,map和有没有运气产生这种类型的动态哈希需要创建基于多少个单元@emails阵列.
有没有人对如何解决这个问题有任何建议?
所以基本上你的问题是这样的:
有这个数组:
emails = ["test@test.com", "test2@test2.com", ....]
Run Code Online (Sandbox Code Playgroud)
你想要一个像这样的哈希数组:
output = [{:key => "OWNER_EMAILS", :value => "test@test.com"},{:key => "OWNER_EMAILS", :value => "test2@test2.com"}, ...]
Run Code Online (Sandbox Code Playgroud)
一个解决方案是:
emails.inject([]){|result,email| result << {:key => "OWNER_EMAILS", :value => email} }
Run Code Online (Sandbox Code Playgroud)
更新:当然我们可以这样做:
emails.map {|email| {:key => "OWNER_EMAILS", :value => email} }
Run Code Online (Sandbox Code Playgroud)