详解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 相关文章推荐
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
Javascript 判断Flash是否加载完成的代码
Apr 12 Javascript
createElement与createDocumentFragment的点点区别小结
Dec 19 Javascript
JavaScript实现的日期控件具体代码
Nov 18 Javascript
JS动态修改图片的URL(src)的方法
Apr 01 Javascript
jquery获取多个checkbox的值异步提交给php
Jul 07 Javascript
JavaScipt选取文档元素的方法(推荐)
Aug 05 Javascript
jQuery中fadein与fadeout方法用法示例
Sep 16 Javascript
利用原生的JavaScript实现简单拼图游戏
Nov 18 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
Mar 15 Javascript
原生js通过一行代码实现简易轮播图
Jun 05 Javascript
如何vue使用el-table遍历循环表头和表体数据
Apr 26 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
我的论坛源代码(七)
2006/10/09 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
简单的js分页脚本
2009/05/21 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
JavaScript闭包详解
2015/02/02 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
Python实现的数据结构与算法之队列详解
2015/04/22 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
python如何读写json数据
2018/03/21 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
财务会计专业毕业生自荐信
2013/10/02 职场文书
销售顾问岗位职责
2014/02/25 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
Java Socket实现多人聊天系统
2021/07/15 Java/Android