0

我有两个哈希数组,我想找出它们之间的区别。我的问题是数组元素是单项哈希。

到目前为止,使用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'}
4

1 回答 1

4

array1 - array2通过将 的元素array2放入临时散列中,然后返回array1未出现在散列中的所有元素来工作。使用哈希元素进行比较==以确定它们是否匹配。

如果哈希的所有键和值都匹配使用,则将两个哈希与==给出比较。所以true==

h1 = {'ID' => '7891'}
h2 = {'ID' => '7891'}
h1 == h2

计算结果为true, 即使h1h2是不同的哈希值,并且相应的元素将被正确删除。

我能想到的唯一考虑因素是哈希键和值中是否总是到处都有字符串。如果它们有时是整数或符号,{:ID => 7891}那么你不会得到你想要的结果,因为:ID == 'ID''7891' == 7891都是false.

于 2013-08-12T21:09:51.100 回答