详解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 相关文章推荐
比较全面的event对像在IE与FF中的区别 推荐
Sep 21 Javascript
js修改地址栏URL参数解决url参数问题
Dec 15 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
JavaScript 作用域链解析
Nov 13 Javascript
jQuery实现可编辑的表格实例讲解(2)
Sep 17 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
vue中使用cropperjs的方法
Mar 01 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 jQuery
node学习笔记之读写文件与开启第一个web服务器操作示例
May 29 Javascript
django js 实现表格动态标序号的实例代码
Jul 12 Javascript
Vue实现数据表格合并列rowspan效果
Nov 30 Javascript
vue router-link 默认a标签去除下划线的实现
Nov 06 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
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
js字符串转成JSON
2013/11/07 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
浅谈js原生拖放
2016/11/21 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
基于Python闭包及其作用域详解
2017/08/28 Python
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
Python装饰器语法糖
2019/01/02 Python
python函数不定长参数使用方法解析
2019/12/14 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
《蜗牛》教学反思
2014/02/18 职场文书
师德演讲稿范文
2014/05/06 职场文书
2014年党支部学习材料
2014/05/19 职场文书
群教个人对照检查材料
2014/08/20 职场文书
青岛导游词
2015/02/12 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS