[英]Find difference between arrays in Ruby, where the elements are hashes
我有两个哈希值数组,我想找出两者之间的区别。 我的问题是数组元素是单个项目哈希。
到目前为止,使用array1 - array2
似乎可以正常工作,但是我是否需要注意此处的陷阱? 哈希元素本身的读法类似于h = {'ID' => '76322'}
,其中哈希值之间的数值不同,因此没有什么花哨的地方。
[编辑]
这是我在寻找的东西:
array1 = []
array2 = []
h = {'ID' => '76322'}
array1.push(h)
h = {'ID' => '7891'}
array1.push(h)
array2.push(h)
array1 = array1 - array2 # should result in array1 having a single hash of values {'ID', '76322'}
array1 - array2
的工作原理是将的元素array2
到一个临时散,然后返回的所有元素array1
没有出现在散。 使用==
比较哈希元素以确定它们是否匹配。
如果所有哈希键和值都使用==
匹配,则将两个哈希与==
进行比较将得出true
。 所以
h1 = {'ID' => '7891'}
h2 = {'ID' => '7891'}
h1 == h2
计算结果为true
,即使h1
和h2
是不同的哈希值,相应的元素也会被正确删除。
我能想到的唯一考虑是,如果在哈希键和值中始终到处都有字符串。 如果它们有时是整数或符号,例如{:ID => 7891}
那么您将无法获得所需的结果,因为:ID == 'ID'
和'7891' == 7891
都为false
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.