《JS中如何比较两个Json对象是否相等实例代码_》由会员分享,可在线阅读,更多相关《JS中如何比较两个Json对象是否相等实例代码_(5页珍藏版)》请在金锄头文库上搜索。
1、JS中如何比较两个Json对象是否相等实例代码_ 在js前端面试过程中,常常会遇到这样的笔试题:JS中如何比较两个Json对象是否相等实例代码,下面我抽点时间给大家整理下,一起看看吧。 1.先预备三个工具方法,用于推断是否是对象类型,是否是数组,猎取对象长度 function isObj(object) return object typeof (object) = object Object.prototype.toString.call(object).toLowerCase() = object object; function isArray(object) return object
2、 typeof (object) = object object.constructor = Array; function getLength(object) var count = 0; for (var i in object) count+; return count; 2.预备两个相同或不同的Json对象 var jsonObjA = Name: MyName, Company: MyCompany, Infos: Age: 100 , Box: Height: 100 , Weight: 200 , Address: 马栏山 var jsonObjB = Name: MyName,
3、 Company: MyCompany, Infos: Age: 100 , Box: Height: 100 , Weight: 200 , Address: 马栏山二号 3.主要的代码 function Compare(objA, objB) if (!isObj(objA) | !isObj(objB) return false; /推断类型是否正确 if (getLength(objA) != getLength(objB) return false; /推断长度是否全都 return CompareObj(objA, objB, true);/默认为true function Com
4、pareObj(objA, objB, flag) for (var key in objA) if (!flag) /跳出整个循环 break; if (!objB.hasOwnProperty(key) flag = false; break; if (!isArray(objAkey) /子级不是数组时,比较属性值 if (objBkey != objAkey) flag = false; break; else if (!isArray(objBkey) flag = false; break; var oA = objAkey, oB = objBkey; if (oA.length != oB.length) flag = false; break; for (var k in oA) if (!flag) /这里跳出循环是为了不让递归连续 break; flag = CompareObj(oAk, oBk, flag); return flag; 4.调用方法 var result = Compare(jsonObjA, jsonObjB); console.log(result); / true or false .