详解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 相关文章推荐
Extjs学习笔记之三 extjs form更多的表单项
Jan 07 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
Apr 26 Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 Javascript
jquery(hide方法)隐藏指定元素实例
Nov 11 Javascript
javascript对下拉列表框(select)的操作实例讲解
Nov 29 Javascript
前台js调用后台方法示例
Dec 02 Javascript
jQuery实现返回顶部功能
Feb 23 Javascript
jQuery实现级联下拉框实战(5)
Feb 08 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
Apr 27 Javascript
Element Input组件分析小结
Oct 11 Javascript
vue iview 隐藏Table组件里的某一列操作
Nov 13 Javascript
Vue的生命周期一起来看看
Feb 24 Vue.js
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
php str_pad 函数使用详解
2009/01/13 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
JS处理VBArray的函数使用说明
2008/05/11 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
基于jquery循环map功能的代码
2011/02/26 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
Python绘制组合图的示例
2020/09/18 Python
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
"引用"与指针的区别是什么
2016/09/07 面试题
两道JAVA笔试题
2016/09/14 面试题
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
幼儿园中秋节活动方案2013
2014/01/29 职场文书
银行优秀员工事迹
2014/02/06 职场文书
理工大学毕业生自荐信范文
2014/02/22 职场文书
大专学生求职信
2014/07/04 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书