Posted in Javascript onNovember 20, 2013
//比较数组是否相同 modeler.compArray=function(array1,array2) { if((array1&&typeof array1 ==="object"&&array1.constructor===Array)&&(array2&&typeof array2 ==="object"&&array2.constructor===Array)) { if(array1.length==array2.length) { for(var i=0;i<array1.length;i++) { var ggg=modeler.compObj(array1[i],array2[i]); if(!ggg) { return false; } } } else { return false; } } else { throw new Error("argunment is error ;"); } return true; }; modeler.compObj=function(obj1,obj2)//比较两个对象是否相等,不包含原形上的属性计较 { if((obj1&&typeof obj1==="object")&&((obj2&&typeof obj2==="object"))) { var count1=modeler.propertyLength(obj1); var count2=modeler.propertyLength(obj2); if(count1==count2) { for(var ob in obj1) { if(obj1.hasOwnProperty(ob)&&obj2.hasOwnProperty(ob)) { if(obj1[ob].constructor==Array&&obj2[ob].constructor==Array)//如果属性是数组 { if(!modeler.compArray(obj1[ob],obj2[ob])) { return false; }; } else if(typeof obj1[ob]==="string"&&typeof obj2[ob]==="string")//纯属性 { if(obj1[ob]!==obj2[ob]) { return false; } } else if(typeof obj1[ob]==="object"&&typeof obj2[ob]==="object")//属性是对象 { if(!modeler.compObj(obj1[ob],obj2[ob])) { return false; }; } else { return false; } } else { return false; } } } else { return false; } } return true; }; modeler.propertyLength=function(obj)//获得对象上的属性个数,不包含对象原形上的属性 { var count=0; if(obj&&typeof obj==="object") { for(var ooo in obj) { if(obj.hasOwnProperty(ooo)) { count++; } } return count; }else { throw new Error("argunment can not be null;"); } };
测试数据:
var data01=[{value:[{id:'asa',value:'dfs'},{}]}]; var data02=[{value:[{id:'asa',value:'dfs'},{}]}]; try { var jjj=modeler.compArray(data01,data02); }catch(e) { }
详解JS 比较两个Json对象的值是否相等的实例
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@