繁体   English   中英

在元素为哈希的Ruby中找出数组之间的差异

[英]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 ,即使h1h2是不同的哈希值,相应的元素也会被正确删除。

我能想到的唯一考虑是,如果在哈希键和值中始终到处都有字符串。 如果它们有时是整数或符号,例如{:ID => 7891}那么您将无法获得所需的结果,因为:ID == 'ID''7891' == 7891都为false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM