2014-02-25 40 views
0

Folks, 給定以下2個對象,比較它們的最佳方法是什麼?只返回它們之間的差異?JavaScript比較和返回對象之間的差異

{ _id: 530797d8952e10129f97fde3, 
    Product: 'something', 
    Realm: [ 'something', 'something','foo' ], 
    Service: 'Node', 
    Owners: [ 'foo', 'something' ], 
    Project: 'something', 
    URLs: 
    [ { 'foo': [Object] }, 
     { 'foo': [Object] }, 
     { 'foo': [Object] } ] } 

...

{ _id: 530797d8952e10129f97fde3, 
    Product: 'something', 
    Realm: [ 'something', 'something','foo' ], 
    Service: 'Node', 
    Owners: [ 'foo', 'something' ], 
    Project: 'something', 
    URLs: 
    [ { 'bar': [Object] }, 
     { 'foo': [Object] }, 
     { 'quux': [Object] } ] } 

我應該通過這些環比,還是有一個預建模塊的人使用?

謝謝!

+0

我還沒有聽說過這樣的模塊。無論如何,你還應該發佈代碼的預期結果,差異。 – Tibos

+0

如果你只是想比較和檢查它們是否相同,你可以使用下劃線 - '_.isEqual()'http://underscorejs.org/#isEqual 你也可以看看isEqual()得到一些想法 - https://github.com/jashkenas/underscore/blob/master/underscore.js。 – palanik

+0

我不知道任何模塊會返回對象之間的差異,但一個簡單的遞歸函數會做。如果通過使用@palanik提到的'_.isEqual'來使對象不相等,則不值得額外檢查步驟。 – Gntem

回答

1

有一個由flitbit寫的夢幻般的node.js模塊,它將完全符合你的願望:deep-diff

我不會詳細介紹它(模塊頁面寫得很好),但它會計算兩個對象之間的差異並給出描述它的詳細輸出。輸出包括屬性是新的/刪除的還是僅具有不同的值。

相關問題