可能的重复:
JavaScript 中的对象比较
是否有任何方法可以接受 2 个 JSON 对象并比较这两个对象以查看是否有任何数据发生更改?
Edit
审查完评论后,需要进行一些澄清。
-
JSON 对象定义为
“一组无序的名称/值对。
对象以 {(左大括号)开头
并以 }(右大括号)结尾。每个
名称后跟 :(冒号)和
名称/值对由 , 分隔
(逗号)。”--json.org
简而言之,我的目标是能够比较 2 个 JSON 对象文字。
我不是 javascript 专家,所以如果在 javascript 中这些是对象文字,那么我想我应该这样称呼它们。
我相信我正在寻找一种能够:
- 深度递归查找唯一的名称/值对
- 确定两个对象文字的长度,并比较名称/值对以查看其中是否存在差异。
简单地解析 JSON 并比较两个对象是不够的,因为
它不会是完全相同的对象引用(但可能是相同的值)。
你需要做一个深刻的平等。
From http://twobit.net/mail-archive/rails-spinoffs/msg06156.html- 似乎使用了 jQuery。
Object.extend(Object, {
deepEquals: function(o1, o2) {
var k1 = Object.keys(o1).sort();
var k2 = Object.keys(o2).sort();
if (k1.length != k2.length) return false;
return k1.zip(k2, function(keyPair) {
if(typeof o1[keyPair[0]] == typeof o2[keyPair[1]] == "object"){
return deepEquals(o1[keyPair[0]], o2[keyPair[1]])
} else {
return o1[keyPair[0]] == o2[keyPair[1]];
}
}).all();
}
});
Usage:
var anObj = JSON.parse(jsonString1);
var anotherObj= JSON.parse(jsonString2);
if (Object.deepEquals(anObj, anotherObj))
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)