详解JS 比较两个Json对象的值是否相等的实例
时间:2024-04-29 13:35:36
//比较数组是否相同
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) {
}
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
一行CSS代码为网站加上奥运主题
![](https://img.aspxhome.com/file/UploadPic/20087/20/2008720123826347s.png)
python的exec、eval使用分析
Python图像处理之图片文字识别功能(OCR)
![](https://img.aspxhome.com/file/2023/1/90501_0s.png)
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Go实现MD5加密的三种方法小结
python RSA加密的示例
![](https://img.aspxhome.com/file/2023/4/124094_0s.png)
OpenCV 图像梯度的实现方法
![](https://img.aspxhome.com/file/2023/6/64296_0s.png)
python 基于dlib库的人脸检测的实现
![](https://img.aspxhome.com/file/2023/7/68967_0s.jpg)
微信跳一跳php代码实现
php实现在服务器端调整图片大小的方法
python实现音乐下载的统计
Python中使用tkFileDialog实现文件选择、保存和路径选择
Python实现求解最大公约数的五种方法总结
解析PHP观察者模式Observer
![](https://img.aspxhome.com/file/2023/2/55402_0s.jpg)
用Dreamweaver设计自动关闭的网页
![](https://img.aspxhome.com/file/UploadPic/20072/200723113111210s.jpg)
java实现的连接oracle/mysql数据库功能简单示例【附oracle+mysql数据库驱动包】
CentOS 6.5下yum安装 MySQL-5.5全过程图文教程
![](https://img.aspxhome.com/file/2023/0/112690_0s.jpg)
python numpy中cumsum的用法详解
Python基于matplotlib实现绘制三维图形功能示例
![](https://img.aspxhome.com/file/2023/5/121645_0s.jpg)
Python操作Redis数据库的超详细教程
![](https://img.aspxhome.com/file/2023/1/98781_0s.jpg)