原理:利用递归遍历对比,遇到不相等就return false;
/*
* 对比两个json数据
* @param:obj1
* @param:obj2
* @return
*/
function compreObj(obj1, obj2) {
var flag = true;
function compre(obj1, obj2) {
if (Object.keys(obj1).length != Object.keys(obj2).length){
flag = false;
} else {
for (var x in obj1) {
if (obj2.hasOwnProperty(x)) {
if (obj1[x] != obj2[x]) {
if( typeof(obj1[x])=="number" || typeof(obj1[x])=="string" || typeof(obj2[x])=="number" || typeof(obj2[x])=="string"){
flag = false;
}else{
compre(obj1[x], obj2[x]);
}
}
} else {
flag = false;
}
}
}
if (flag === false) {
return false;
} else {
return true;
}
}
return compre(obj1, obj2)
}
//设定json--准备调用
var jsonA = {
"Name": "MyName",
"Company": "MyCompany",
"Infos": [
{"Ages": "102"},
{"Box": [
{"Height": "100"},
{"Weight": "200"}
]
}
],
"Address": "undefined"
};
var jsonB = {
"Name": "MyName",
"Company": "MyCompany",
"Infos": [
{"Ages": "101"},
{"Box": [
{"Height": "100"},
{"Weight": "200"}
]
}
],
"Address": "undefined"
};
console.log(compreObj(jsonA, jsonB));//调用 --------->false