Ruby:使用默认键+数组值创建散列

标签 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"}]

我认为散列内部的 HashArray 让我失望了。但我玩过 injectupdatemergecollectmap 并没有生成这种类型的动态散列,它需要根据 @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/

相关文章:

ruby-on-rails - Windows 8 64 位 ruby​​-debug-ide 安装 linecache19 由于 gcc -m64 标志错误 : sorry, 未实现:64 位模式未编译而失败

html - 如何在不使用 Nokogiri 的情况下替换 ruby​​ 中的 html 标签?

c - 在 C 中的循环中重新声明数组

arrays - 在 Flutter 中将我的帖子更改为 JSON 数组

javascript - 更改链接的 href

perl - 是否可以将键值对直接推送到 perl 中的散列?

ruby-on-rails - 如何使用 http.get 保留大小写?

ruby - Ruby Anagram算法的时空复杂度

将二维数组转换为 C 中的灰度图像

perl - 是否有一种简单的方法来验证散列元素的散列是否存在并已定义?