我有两个哈希数组我想找到它们之间的区别。我的问题是数组元素是单项哈希。
到目前为止,使用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'}
答案 0 :(得分:4)
array1 - array2
的工作原理是将array2
的元素放入临时哈希,然后返回未出现在哈希中的array1
的所有元素。使用==
比较散列元素以确定它们是否匹配。
如果哈希的所有键和值都使用==
匹配,则使用true
比较两个哈希值会==
。所以
h1 = {'ID' => '7891'}
h2 = {'ID' => '7891'}
h1 == h2
评估为true
,即使h1
和h2
是不同的哈希值,也会正确删除相应的元素。
我能想到的唯一考虑因素是你总是在散列键和值中到处都有字符串。如果它们有时是整数或符号,例如{:ID => 7891}
,那么您将无法获得所需的结果,因为:ID == 'ID'
和'7891' == 7891
都是 false