详解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) {
}
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- <%@ Language=VBScript %><HTML><HEAD>
- 如下所示:import requests url='http://www.baidu.com'#下面使用requests.r
- 前言:任何一个编程者都少不了要去调试代码,不管你是高手还是菜鸟,调试程序都是一项必不可少的工作。一般来说调试程序是在编写代码之后或测试期修改
- 摘要PIL.Image.open读入的是RGB顺序,而opencv中cv2.imread读入的是BGR通道顺序 。cv2.imread会显示
- Tornado 4.0 已经发布了很长一段时间了, 新版本广泛的应用了协程(Future)特性. 我们目前已经将 Tornado 升级到最新
- 针对这种情况,人工智能自动SQL优化工具应运而生。现在我就向大家介绍这样一款工具:SQLTuning for SQL Server。1. S
- 觉得废话多的话,可以直接看代码作用防止有人不停的刷接口,对接口作限制比如说,登录接口,按道理说,应该只有app会请求这个接口但是,如果有人抓
- 方法1 自带pytorch自带方法,计算模型参数总量total = sum([param.nelement() for param in m
- 弹指间,2023已经到来,新的一年,祝大家新年快乐,阖家幸福呀~~~好吧,进入正题,2023的到来,肯定少不了烟花吧(外面不让放炮,那咱们就
- 一、MySQL5.6安装后,不能正常启用压缩版MySQL,解压完后在:我的电脑->属性->高级->环境变量选择PATH,在
- 错误日志安装时出现了如下错误:SQL Server 2005 安装错误码29503。产品: Microsoft SQL Server 200
- 前言在Python中元组是一个相较于其他语言比较特别的一个内置序列类型。有些python入门教程把元组成为“不可变的列表”,这种说法是不完备
- 1.scrapy_splash是scrapy的一个组件scrapy_splash加载js数据基于Splash来实现的Splash是一个Jav
- 如下所示:#coding=utf8import csv import logginglogging.basicConfig(level=lo
- 目录实例001:数字组合实例002:“个税计算”实例003:完全平方数实例004:这天第几天实例005:三数排序实例006:斐波那契数列实例
- 所有的前提都需要获取到root权限1.结束mysql进程//Linuxsudo services mysql stop//Macbrew s
- icech: 在制作网页的时候,常常要遇到制作虚线表格的问题,下面的文章就能解决这个问题。方法一:作一个1X2的图。半黑半白,再利用表格作成
- 利用Chrome或Firefox保存的Har文件http/https请求,可用于遍历字典提交From表单.少说废话直接上代码Github地址
- Python里的多线程是假的多线程,不管有多少核,同一时间只能在一个核中进行操作!利用Python的多线程,只是利用CPU上下文切换的优势,
- 前言文件和目录操作是很常见的功能,这里做个简单的总结,包括注意事项和实际的实现代码,基本日常开发都够用了目录操作判断目录或是文件是否存在os