2012-08-03 46 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