2012-08-03 45 views
0

在此之後SO我想比較散列值的兩個數組:比較使用套散列值的兩個數組在紅寶石

db = [ 
{:foo => "bar", :stack => "overflow", :num => 0.5}, 
{:foo => "bar", :stack => "underlow", :num => 0.5}, 
{:foo => "bar", :stack => "overflow", :num => 0.1} 
] 

csv = [ 
{:foo => "bar", :stack => "overflow", :num => 0.5}, 
{:foo => "bar", :stack => "underlow", :num => 0.1}, 
] 

我試圖用一個紅寶石套裝(db_set = Set[db]csv_set = Set[csv])使用比較兩個(db_set - csv_set)和&db_set & csv_set),但這些似乎沒有執行比較操作。

我誤解了Set的使用嗎?我如何比較這兩個哈希數組?

+0

你想比較(這個數組小於該數組)還是執行set操作? – 2012-08-03 13:01:10

+0

我想進行設置操作,即返回哪兩個hahses是共同的,這是不是在一個或其他等 – rwb 2012-08-03 13:02:49

回答

3

這裏不需要使用套件。似乎你對Array操作符會很好。

db = [ 
    {:foo => "bar", :stack => "overflow", :num => 0.5}, 
    {:foo => "bar", :stack => "underlow", :num => 0.5}, 
    {:foo => "bar", :stack => "overflow", :num => 0.1} 
] 

csv = [ 
    {:foo => "bar", :stack => "overflow", :num => 0.5}, 
    {:foo => "bar", :stack => "underlow", :num => 0.1}, 
] 

db - csv # => [{:foo=>"bar", :stack=>"underlow", :num=>0.5}, {:foo=>"bar", :stack=>"overflow", :num=>0.1}] 
db & csv # => [{:foo=>"bar", :stack=>"overflow", :num=>0.5}] 
+0

嗯 - 我試着這最初在我的數據(db = 339哈希和csv = 10)和(db - csv).count = 339(當我知道10個csv哈希在db中時,我將更仔細地檢查我的數據... – rwb 2012-08-03 13:08:51

+0

也許在某些哈希鍵中是符號而在其他字符串中 - 它們不會相等。 (只是一個猜測) – 2012-08-03 13:11:22

+0

我一直在測試db [0] == csv [0]這是真的,奇怪的 – rwb 2012-08-03 13:11:52