在Ruby中合并哈希和数组以形成哈希并在最终哈希中看到的数组值中添加一些字符串

时间:2014-09-27 18:50:17

标签: ruby-on-rails ruby arrays hash puppet

需要使用从User提供的值作为散列和数组形成散列...结束散列应该将数组项作为键并添加一些额外的字符串以生成可接受的散列,然后将其合并如果在该

中的哈希值中碰巧存在重复键,则最初提供的哈希值优先于数组项
        argument1 = {
             'key1' => 'value1',
             'key2' => 'value2',
             'C'    => 'value3',
        }
        argument2 = ["X","key2","Y"]

需要将键和值字符串添加到数组项中,因为它们是

         X => {
             'added_string' => 'added_string2'
         }

对于数组中的key2和Y

相同

以上内容应与原始argument1合并,以获得以下输出

       result => {
              'key1' => 'value1',
              'C'    => 'value3',
               'X' => {'added_string' => 'added_string2'},
               'Y' => {'added_string' => 'added_string2'},
               'key2' => {'added_string' => 'added_string2'},
       }
参数1中的

key2字段被覆盖,因为它在argument2数组中是重复的,并且其内容设置为参数2中其他数组项的内容

1 个答案:

答案 0 :(得分:0)

argument1 = {
  'key1' => 'value1',
  'key2' => 'value2',
  'C'    => 'value3',
}
argument2 = ["X","key2","Y"]

added = { 'added_string' => 'added_string2' }


puts argument1.merge(
  Hash[argument2.zip([added] * argument2.size)]
)

# Hash[:a, :b, :c, :d] => { a: :b, c: :d }
# [:a].zip([:b]) => [[:a, :b]]
# [:a] * 3 => [:a, :a, :a]