加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – ruby中两个哈希值之间的变化

发布时间:2020-12-17 04:02:48 所属栏目:百科 来源:网络整理
导读:我有两个以下格式的哈希 mydetails[x['Id']] = x['Amount'] 这将包含像 hash1 = {"A"="0","B"="1","C"="0","F"="1"}hash2 = {"A"="0","B"="3","E"="1"} 我期待输出类似于: Differences in hash: “B,F,E” 很感谢任何形式的帮助. 解决方法 带块的 Hash#merg
我有两个以下格式的哈希

mydetails[x['Id']] = x['Amount']

这将包含像

hash1 = {"A"=>"0","B"=>"1","C"=>"0","F"=>"1"}
hash2 = {"A"=>"0","B"=>"3","E"=>"1"}

我期待输出类似于:

Differences in hash: “B,F,E”

很感谢任何形式的帮助.

解决方法

带块的 Hash#merge会做:

hash1.merge(hash2) { |k,v1,v2| v1 == v2 ? :equal : [v1,v2] }
     .reject { |_,v| v == :equal }
     .keys
#? ["B","F","E"]

注意:即使对于包含值为的相等的哈希(以解决下面的注释),这也适用,因为合并结果将包含值[:equal,nil],而不仅仅是值:equal.但是,为了简化整个过程并避免混淆,在Ruby 2.4中你可以像这样使用Hash#compact:

hash1.merge(hash2) { |_k,v2| v1 == v2 ? nil : :different }
     .compact.keys

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读