详解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 相关文章推荐
form中限制文本字节数js代码
Jun 10 Javascript
Mootools 1.2教程(2) DOM选择器
Sep 14 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
Sep 16 Javascript
Javascript实现重力弹跳拖拽运动效果示例
Jun 28 Javascript
详解maxlength属性在textarea里奇怪的表现
Dec 27 Javascript
javascript对象的创建和访问
Mar 08 Javascript
Bootstrap使用基础教程详解
Sep 05 Javascript
基于javascript实现最简单选项卡切换
Feb 01 Javascript
使用gulp搭建本地服务器并实现模拟ajax
Apr 05 Javascript
Javascript实现找不同色块的游戏
Jul 17 Javascript
微信小程序实现自上而下字幕滚动
Jul 14 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
Jul 19 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
一个简洁的多级别论坛
2006/10/09 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
php实现天干地支计算器示例
2014/03/14 PHP
PHP微框架Dispatch简介
2014/06/12 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
javascript操作文本框readOnly
2007/05/15 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
python实现批量文件重命名
2019/10/31 Python
Python FFT合成波形的实例
2019/12/04 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
您的网上新华书店:文轩网
2016/08/24 全球购物
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
学生学习总结的自我评价
2013/10/22 职场文书
求职自荐信范文格式
2013/11/29 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
2014年幼儿园元旦活动方案
2014/02/13 职场文书
三字经教学反思
2014/04/26 职场文书
计生工作先进事迹
2014/08/15 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
党小组鉴定意见
2015/06/02 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
严以律己学习心得体会
2016/01/13 职场文书
导游词之青岛崂山
2019/12/27 职场文书
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android