复制代码 代码如下:
//比较数组是否相同
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 {
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) {
}