详解JS 比较两个Json对象的值是否相等的实例


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)  {
     }
Javascript 相关文章推荐
javascript的trim,ltrim,rtrim自定义函数
Sep 21 Javascript
window resize和scroll事件的基本优化思路
Apr 29 Javascript
Javascript仿PHP $_GET获取URL中的参数
May 12 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
Feb 24 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
May 30 Javascript
微信小程序 支付简单实例及注意事项
Jan 06 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
vuex如何重置所有state(可定制)
Jan 17 Javascript
简单了解node npm cnpm的具体使用方法
Feb 27 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
Aug 23 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
详解如何使用React Hooks请求数据并渲染
Oct 18 Javascript
javascipt匹配单行和多行注释的正则表达式
Nov 20 #Javascript
自定义的一个简单时尚js下拉选择框
Nov 20 #Javascript
jQuery对html元素取值与赋值的方法
Nov 20 #Javascript
客户端js判断文件类型和文件大小即限制上传大小
Nov 20 #Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 #Javascript
使用js简单实现了tree树菜单
Nov 20 #Javascript
js 用CreateElement动态创建标签示例
Nov 20 #Javascript
You might like
一个图形显示IP的PHP程序代码
2007/10/19 PHP
php基础学习之变量的使用
2011/06/09 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
Python实现简单登录验证
2016/04/13 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
区域总监的岗位职责
2013/11/21 职场文书
建筑行业的大学生自我评价
2013/12/08 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
写给医生的感谢信
2015/01/22 职场文书
大国崛起英国观后感
2015/06/02 职场文书
法定代表人身份证明书
2015/06/18 职场文书
暂住证明怎么写
2015/06/19 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript