• javascript 判断对象的值是否相等


     经常要判断两个对象的值是否相等 ,写了个方法用来比较,和对象深层copy的思路有点像,都是将对象进行类型判断 然后操作 。记录下。

     1 function compareobj(A,B){
     2                 if(A instanceof Array){
     3                     if(!(B instanceof Array)){
     4                         return false;
     5                     }
     6                     var aLen = A.length,
     7                         bLen = B.length;
     8                     if(aLen != bLen){
     9                         return false;
    10                     }
    11                     var isEqual = true,num = 0;
    12                     for(var i = 0;i < aLen;i++){
    13                         if(A[i]!=B[i] && typeof A[i]=='object' && typeof B[i]=='object'){
    14                           isEqual = arguments.callee.apply(null,[A[i],B[i]]);
    15                           //isEqual = compareobj(A[i],B[i]);
    16                         }else{
    17                           isEqual = A[i]===B[i];
    18                         }
    19                         if(isEqual){
    20                             num++;
    21                         }
    22                     }
    23                     if(num != aLen){
    24                         return false;
    25                     }else{
    26                         return true;
    27                     }
    28                 }else if(A instanceof Date){
    29                     if(!(B instanceof Date)){
    30                         return false;
    31                     }else{
    32                         return A.getTime() == B.getTime();
    33                     }
    34                 }else if(A instanceof Object){
    35                     if((B instanceof Array) || (B instanceof Date) || !(B instanceof Object)){
    36                         return false;
    37                     }else{
    38                        var aLen=bLen=0;
    39                        for(var i in A){
    40                             aLen++;
    41                        }
    42                        for(var i in B){
    43                             bLen++;
    44                        }
    45                        if(aLen != bLen){
    46                             return false;
    47                        }
    48                        var isEqual = true,num = 0;
    49                        for(var i in A){
    50                          if(typeof A[i] == 'object' && typeof B[i] == 'object' && A[i]!=B[i]){
    51                             isEqual = arguments.callee.apply(null,[A[i],B[i]]);
    52                            // isEqual = compareobj(A[i],B[i]);
    53                          }else{
    54                             isEqual = A[i]===B[i];
    55                          }
    56                          if(isEqual){
    57                             num++;
    58                          }
    59                        }
    60                        if(num != aLen){
    61                             return false;
    62                        }else{
    63                             return true;
    64                        }
    65                     }
    66                 }else{
    67                     if(B instanceof Object){
    68                         return false;
    69                     }else{
    70                         return A===B;
    71                     }
    72                 }
    73             }
  • 相关阅读:
    python 配置环境变量无效问题
    vscode 快捷隐藏node_modules目录
    qs 格式化
    webstorm vue 格式化 script 最外层缩进问题
    electron-vue static静态目录
    解决VS Code安装golang相关插件失败问题
    linux云机器快速部署备忘录
    添加用户(过火绒)
    hvv面试题
    comsvcs.dll转储lsass(过360卫士&火绒)
  • 原文地址:https://www.cnblogs.com/lmh2072005/p/2619903.html
Copyright © 2020-2023  润新知