我相信之前有人在稍微不同的上下文中问过/回答过这个问题,并且我已经看到了一些与此有些相似的示例的答案 - 但似乎没有什么是完全合适的。
我有一个电子邮件地址数组:
@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"}]
我认为散列内部的 Hash
的 Array
让我失望了。但我玩过 inject
、update
、merge
、collect
、map
并没有生成这种类型的动态散列,它需要根据 @emails
数组中的条目数来创建。
有人对如何实现这一目标有任何建议吗?
最佳答案
所以基本上你的问题是这样的:
有这个数组:
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} }
关于Ruby:使用默认键+数组值创建散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1468175/