繁体   English   中英

在Ruby中合并一个Hash和一个Array以形成一个Hash并将一些字符串添加到Array值中,以便在最终的Hash中看到

[英]Merge a Hash and an Array in Ruby to form a Hash and add some string to the Array values to be seen in final Hash

需要以用户提供的值作为散列和数组来形成散列...结束散列应将数组项作为键,并向其中添加一些额外的字符串以形成可接受的散列,然后将其与提供的散列合并如果哈希中恰好有重复的键,则最初优先考虑数组项

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

需要在数组项中添加键和值字符串,因为它们与

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

对于数组中的key2也是Y

上面的应该与原始参数1合并以具有以下输出

       result => {
              'key1' => 'value1',
              'C'    => 'value3',
               'X' => {'added_string' => 'added_string2'},
               'Y' => {'added_string' => 'added_string2'},
               'key2' => {'added_string' => 'added_string2'},
       }

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

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM