比较Ruby中散列的哈希值

时间:2010-08-12 04:52:59

标签: ruby

我有两个类似于下面的结构。

[1 => [{'pc'=>1,'id'=>0},{'pc'=>4,'id'=>0},{'pc'=>2,'id'=>1]]

但是它们都不需要以完全相同的顺序包含内部数组。在这种情况下如何比较?

3 个答案:

答案 0 :(得分:1)

如果订单不重要,您应该考虑其他结构,而不是那里的数组,Set,例如。

您也可以使用Set进行比较,方法是在比较之前将Arrays转换为Sets:

require 'set'
a = [{:a => 2}, {:b => 3}]
b = [{:b => 3}, {:a => 2}]

sa = Set.new a
#=> #<Set: {{:a=>2}, {:b=>3}}>
sb = Set.new b
#=> #<Set: {{:b=>3}, {:a=>2}}>

a == b
#=> false
sa == sb
#=> true

答案 1 :(得分:0)

这似乎是一个简单的比较工作:

data = {
  1 => [{'pc'=>1,'id'=>0},{'pc'=>4,'id'=>0},{'pc'=>2,'id'=>1}],
  2 => [{'pc'=>1,'id'=>0},{'pc'=>4,'id'=>0},{'pc'=>2,'id'=>1}],
  3 => [{'pc'=>1,'id'=>0},{'pc'=>2,'id'=>1},{'pc'=>4,'id'=>0}]
}
data[1] == data[2]
#> true
data[2] == data[3]
#> false

答案 2 :(得分:0)

如果两个嵌套哈希具有相同的键和顺序,我们可以编写一个递归方法进行比较。我不确定我们是否具有内置方法。