Сравнение хэша хэшей в Ruby - PullRequest
0 голосов
/ 12 августа 2010

У меня есть две структуры, подобные приведенной ниже.

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

Но обеим им не обязательно содержать внутренний массив в точно том же порядке.Как сравнить в таком случае?

Ответы [ 2 ]

1 голос
/ 12 августа 2010

Если порядок не важен, вы должны рассмотреть другие структуры вместо массива, например, Set.

Вы также можете использовать Set для сравнения,преобразование массивов в наборы перед сравнением:

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
0 голосов
/ 12 августа 2010

Вроде простое сравнение работает:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...