2015-06-04 40 views
1

我是新來的導軌。所以,如果問題很簡單,不好意思。 我有兩個哈希hash1和hash2。兩者都有相同的密鑰。我需要並排顯示兩個哈希值,並以不同顏色突出顯示哈希值之間的差異。導軌 - 兩個哈希之間的顯示差異

+1

請分享你到目前爲止嘗試過的代碼。它會幫助人們回答你的問題。 –

回答

2

Rails有散列#DIFF:

http://apidock.com/rails/Hash/diff

{1 => 2}.diff(1 => 2)   # => {} 
{1 => 2}.diff(1 => 3)   # => {1 => 2} 
{}.diff(1 => 2)    # => {1 => 2} 
{1 => 2, 3 => 4}.diff(1 => 2) # => {3 => 4} 

編輯: 但是,這是在Rails的4.1去除。 要在更現代的項目中獲得相同的結果,您可以使用此方法,該方法源自上述方法。

def hash_diff(first, second) 
    first. 
    dup. 
    delete_if { |k, v| second[k] == v }. 
    merge!(second.dup.delete_if { |k, v| first.has_key?(k) }) 
end 

hash_diff({1 => 2}, {1 => 2})   # => {} 
hash_diff({1 => 2}, {1 => 3})   # => {1 => 2} 
hash_diff({}, {1 => 2})    # => {1 => 2} 
hash_diff({1 => 2, 3 => 4}, {1 => 2}) # => {3 => 4} 
+0

Rails *有* Hash#diff。這在4.0.2之後被棄用... https://apidock.com/rails/Hash/diff – jvrsgsty

+1

@jvrsgsty感謝您的提示。我爲以後的rails版本添加了一個等效的方法。 – Unixmonkey