如何使用新哈希值更改哈希值?

时间:2013-09-20 16:32:36

标签: ruby hash

我有这些哈希:

{"a" => 1, "b" => 2, "c" => 3, "k" => 14}
{"b" => 51, "c" => 2, "d"  => 8}

我需要编写代码,以便在操作之后,结果将是:

{"a" => 1, "b" => 51, "c" => 2, "k" => 14}

我试过了:

h1.each do |h, j|
  h2.each do |hh, jj|
    if h == hh
      j = jj
    end
  end
end

但它不起作用。另外我认为这是丑陋的代码,那么如何才能更好/更好地编写?

我虽然应该比较两个哈希值,如果第二个键与第一个键相同,则将第一个哈希值更改为第二个哈希值。

1 个答案:

答案 0 :(得分:1)

只需迭代h2中的条目,只有在h1已存在时才更新h2.each { |k,v| h1[k]=v if h1.include?(k) } h1 # => {"a"=>1, "b"=>51, "c"=>2, "k"=>14 } 中的相应条目:

h2

此外,如果您要更新上述条目,也要添加h1.merge!(h2) h1 # => {"a"=>1, "b"=>51, "c"=>2, "k"=>14, "d"=>8} 中的新条目,您只需使用Hash#merge! method

{{1}}