我希望能够获得两个JavaScript对象图之间所有差异的列表,以及发生增量的属性名称和值.
对于它的价值,这些对象通常作为JSON从服务器中检索,并且通常只有少数深层(即它可能是一个对象数组,它们本身具有数据,然后是与其他数据对象一起的数组).
我想不仅要看到基本属性的更改,还要看到数组成员数量的差异等.
如果我没有得到答案,我可能最终会自己写这篇文章,但希望有人已经完成了这项工作或者知道有人.
编辑:这些对象通常在结构上彼此非常接近,所以我们不是在讨论彼此完全不同的对象,而是可能有3或4个增量.
我有两个javascript对象:
var a = {
x: 1,
y: {
faz: 'hello',
baz: ''
},
z: [1, 2]
};
var defaults = {
x: 2,
y: {
faz: '',
baz: ''
},
z: [1, 2]
};
Run Code Online (Sandbox Code Playgroud)
我只想保留的领域a是不同的默认:
a = remove_defaults(a, defaults); // <---- i need this fnc
{
x: 1,
y: {
faz: 'hello'
}
}
Run Code Online (Sandbox Code Playgroud)
目标是从作为状态的对象中删除默认值(通过URL).状态可以有嵌套字段,因此浅层比较是不够的.叶子值都是原始的(数字,字符串,布尔).
(这有点像underscore.js's _.defaults()方法的反面)
实现这一目标的最佳方法是什么?
解决方案可以使用,underscore.js如果这有帮助,但没有jquery.