2015-03-02 56 views

回答

1

https://www.npmjs.com/package/deep-diff

我们使用它 - 这是伟大的 - 例如:

var diff = require('deep-diff').diff; 

var lhs = { 
    name: 'my object', 
    description: 'it\'s an object!', 
    details: { 
     it: 'has', 
     an: 'array', 
     with: ['a', 'few', 'elements'] 
    } 
}; 

var rhs = { 
    name: 'updated object', 
    description: 'it\'s an object!', 
    details: { 
     it: 'has', 
     an: 'array', 
     with: ['a', 'few', 'more', 'elements', { than: 'before' }] 
    } 
}; 

var differences = diff(lhs, rhs); 
2

你可能想看看jsondiffpatch(免责声明:我是作者),

可以try it online here, 刚一些亮点:

  • 智能数组diff(使用LCS来检测添加/删除,并找到它时间在阵列)
  • 移动它很定制的,你甚至可以编写插件来改变的差异/补丁机制的任何部分
  • 如果2个长串在图表的任何地方发现,它会使用你在内部提尼尔·弗雷泽的lib得到一个文本unidiff
  • 多个格式化,HTML(在在线演示中使用的),控制台,注释,现在jsonpatch(RFC6902)

这应该版本比较/修补任何两个物体工作,框架不可知的,如果ExtJS在你的对象上定义了特殊的私有属性,你可以忽略它们,指定一个propertyFilter