分类: javascript
Javascript 判断两个JSON对象是否相等
Javascript 判断JSON对象是否相等
var objC = {}.constructor;
function isObj(obj) {
return obj && obj.constructor === objC;
}
var arrC = [].constructor;
var isArr = function (arr) {
return arr && arr.constructor === arrC;
};
function compare(obj1, obj2) {
var flag = true;
if ((isObj(obj1) && isObj(obj2)) || (isArr(obj1) && isArr(obj2))) {
if (isArr(obj1) && obj1.length !== obj2.length) return false;
for (var key in obj1) {
if (obj1.hasOwnProperty(key)) {
if (typeof obj1[key] === 'object') {
if (!compare(obj1[key], obj2[key]))
flag = false;
} else if (obj1[key] !== obj2[key]) {
flag = false;
}
}
}
} else if (obj1 !== obj2) {
flag = false;
}
return flag;
}
//测试用例
console.log(compare({a:1},{a:1})); //true
console.log(compare({a:[1,2,3]},{a:[1,2,3]})); //true
console.log(compare({a:[1,2,3],b:{bb:[true,null,undefined,'aa',22]}},{a:[1,2,3],b:{bb:[true,null,undefined,'aa',22]}})); //true
Github地址:https://github.com/zhupeixin/blog_demo/blob/master/201801/equal-json.js
本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:http://zhupeixin.com/article/2018/01/equal-json
( 本篇完 )
- 下一篇: Javascript两个JSON对象合并