查找Ruby中数组之间的差异,其中元素是散列
我有两个哈希数组,我想找出它们之间的区别。我的问题是数组元素是单项散列 到目前为止,使用查找Ruby中数组之间的差异,其中元素是散列,ruby,arrays,hash,Ruby,Arrays,Hash,我有两个哈希数组,我想找出它们之间的区别。我的问题是数组元素是单项散列 到目前为止,使用array1-array2似乎工作正常,但我需要注意这里的问题吗?散列元素本身的读取方式类似于h={'ID'=>'76322'},其中,散列的数值不同,所以没有什么特别的 [编辑] 以下是我想要的: array1 = [] array2 = [] h = {'ID' => '76322'} array1.push(h) h = {'ID' => '7891'} array1.push(h) a
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
都是falsearray1-array2
通过将array2
的元素放入临时散列来工作,然后返回未出现在散列中的array1
的所有元素。使用=
比较哈希元素以确定它们是否匹配
使用==
比较两个哈希值,如果哈希值的所有键和值都匹配,则给出true
。所以
h1 = {'ID' => '7891'}
h2 = {'ID' => '7891'}
h1 == h2
计算结果为true
,即使h1
和h2
是不同的散列,相应的元素也将被正确删除
我唯一能想到的是,如果哈希键和值中处处都有字符串。如果它们有时是整数或符号,比如{:ID=>7891}
,那么你就不会得到你想要的结果,因为:ID='ID'
和'7891'==7891
都是假的
请给出示例输入和预期输出..现在你想要什么?您告诉我如何在Ruby中查找数组之间的差异。我请求您共享这两个数组的内容。请将其放入您的问题中。根据您的示例,您将在array1
中获得[]
。好的,它们现在在问题中。请给出示例输入和预期输出。现在您想要什么?您告诉我如何在Ruby中查找数组之间的差异。我请求您共享这两个数组的内容。请将其放入您的问题中。根据您的示例,您将在数组1
中获得[]
。好的,它们现在在问题中。感谢您的解释。感谢您的解释。