如何解决一般比较两个散列数组,而没有 ruby 中的任何特定键
我想在没有任何特定键 "d"
的情况下比较所有值的 2 个哈希数组。请帮助以迭代哈希数组中的所有值的方式比较 2 个哈希数组。
A = [
{"a"=>"1000","b"=>"0","c"=>"3","d"=>"1","e"=>"3","f"=>"status"},{"a"=>"2","e"=>"0","c"=>"4","d"=>"3","e="3","f"=>"s-2"},{"a"=>"0","c"=>"1","e"=>"1","f"=>"s-01"} ]
B= [
{"a"=>"1000","f"=>"s-01"} ]
我已经尝试过下面的代码,但我想比较没有特定键 "d"
的所有元素。请帮忙!
A.each do |e_hash|
B.each do |a_hash|
if (a_hash["d"].to_s == e_hash["d"].to_s)
e_hash.each do |k,v|
puts v if k == "d" if (a_hash[k].to_s != v.to_s)
count += 1
else
count
end
end
end
解决方法
当你想比较没有特定键的两个散列时,你可以使用
hash_1 = { "a" => 0,"b" => 0,"c" => 0 }
hash_2 = { "a" => 0,"c" => 1 }
hash_1.tap { |hs| hs.delete("c") } == hash_2.tap { |hs| hs.delete("c") }
#=> true
在上面的例子中,你可以这样做:
A = [
{"a"=>"1000","b"=>"0","c"=>"3","d"=>"1","e"=>"3","f"=>"status"},{"a"=>"2","e"=>"0","c"=>"4","d"=>"3","f"=>"s-2"},{"a"=>"0","c"=>"1","e"=>"1","f"=>"s-01"}
]
B = [
{"a"=>"1000","f"=>"s-01"}
]
A.each do |e_hash|
B.each do |a_hash|
if e_hash.tap { |hs| hs.delete("d") } == a_hash.tap { |hs| hs.delete("d") }
puts "Equal hash found: #{e_hash}"
end
end
end
#=> Equal hash found: {"a"=>"1000","f"=>"status"}
# Equal hash found: {"a"=>"2","f"=>"s-2"}
# Equal hash found: {"a"=>"0","f"=>"s-01"}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。