0
我有兩個類似於下面的結構。在紅寶石中比較散列的哈希值
[1 => [{'pc'=>1,'id'=>0},{'pc'=>4,'id'=>0},{'pc'=>2,'id'=>1]]
但是他們都不需要以完全相同的順序包含內部數組。在這種情況下如何比較?
我有兩個類似於下面的結構。在紅寶石中比較散列的哈希值
[1 => [{'pc'=>1,'id'=>0},{'pc'=>4,'id'=>0},{'pc'=>2,'id'=>1]]
但是他們都不需要以完全相同的順序包含內部數組。在這種情況下如何比較?
如果順序不重要,則應考慮其他結構而不是Array,例如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
這似乎是一個簡單的比較工作:
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
首先考慮轉換陣列來套的話,順序無關緊要。 – jtbandes 2010-08-12 05:18:30
你需要考慮列表中的重複項嗎? – 2010-08-12 12:12:43