ruby-on-rails – 与另一个嵌套哈希相比,从嵌套哈希中查找丢失的密钥

ruby-on-rails – 与另一个嵌套哈希相比,从嵌套哈希中查找丢失的密钥,第1张

概述我有两个嵌套的哈希值(hash1,hash2),偶然碰巧是从yml文件生成的哈希值.我需要找到hash1中存在但不在hash2中的所有键(完整的父链). 给定这两个哈希值,输出应为hash_diff. hash1 = {"A" => 1, "B" => {"C" => 2, "D" => 3} , "E" => 1} hash2 = {"A" => 1, "B" => {"C" => 2} } 我有两个嵌套的哈希值(hash1,hash2),偶然碰巧是从yml文件生成的哈希值.我需要找到hash1中存在但不在hash2中的所有键(完整的父链).

给定这两个哈希值,输出应为hash_diff.

hash1 = {"A" => 1,"B" => {"C" => 2,"D" => 3},"E" => 1} hash2 = {"A" => 1,"B" => {"C" => 2} }hash_diff = {"B" => {"D" => 3},"E" => 1}

请注意,我想要一个类似哈希差异的东西,它只考虑密钥,而不是值.

解决方法 这是解决方案.虽然我修改了原来的hash1
所以用法是:

hash_diff(hash1,hash2)hash_diff_var = hash1def self.hash_diff_helper(hash1,hash2)    hash1.each_pair do |k,v|      if v.is_a?(Hash) && hash2.key?(k)        hash_diff_helper(v,hash2[k])      elsif !v.is_a?(Hash) && hash2.key?(k)        hash1.delete(k)      end    end  end  def self.hash_diff(hash1,hash2)    hash_diff_helper(hash1,hash2)    hash1.select!{|k,v| v.present?}  end
总结

以上是内存溢出为你收集整理的ruby-on-rails – 与另一个嵌套哈希相比,从嵌套哈希中查找丢失的密钥全部内容,希望文章能够帮你解决ruby-on-rails – 与另一个嵌套哈希相比,从嵌套哈希中查找丢失的密钥所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1269862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存