如何比较js中两个相等实例代码的JSON对象
1。首先准备三种工具方法,以确定它是否是对象类型,不管它是数组还是获取对象的长度。
功能isobj(对象){
返回对象类型(object)= 'object' object.prototype.tostring.call(对象)。ToLowerCase({对象)= =对象};
}
功能ISArray(对象){
返回对象类型(object)= 'object' object.constructor = =阵列;
}
函数长度(对象){
var计数= 0;
对于(对象中的var i)计数+;
返回计数;
}
2。准备两个相同或不同的JSON对象
无功jsonobja = { {
名字:我的名字
公司:我
信息:
{年龄:100 },
{
:
{高度:100 },
{重量:200 }
}
}
},
地址:马兰山
}
无功jsonobjb = { {
名字:我的名字
公司:我
信息:
{年龄:100 },
{
:
{高度:100 },
{重量:200 }
}
}
},
地址:马兰二号山
}
三.主要代码
功能比较(obja,objb){
如果(!IsObj(obja)| |!isobj返回false(objb)); / /正确的判断
如果(长度(obja)!=长度(objb))return false; / /判断长度是否一致
返回compareobj(obja,objb,true); / /默认是真的
}
功能compareobj(obja,objb、旗){
对于(在obja VAR键){
如果(国旗!)退出循环
打破;
如果(!objb.hasownproperty(关键)){旗= false;break;}
如果(!(obja ISArray {key})){ / /子级不是数组,比较
如果(objb {key}!= obja {key}){旗= false;break;}
{人}
如果(!(objb ISArray {key})){旗= false;break;}
VaR OA = obja {key},OB = objb {key};
如果(oa.length!=长度){标志=假;破;}
对于(在OA中的VaR K){
如果(国旗!)这是不让循环返回到递归的。
打破;
标志= compareobj(OA { } { } OB K,K,标志);
}
}
}
返回标志;
}
4。调用方法
VaR结果比较(jsonobja,jsonobjb);
console.log(结果); / /真或假