`
lmh2072005
  • 浏览: 113817 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javascript 判断对象的值是否相等

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


           /*
            *typeof 取值为object的 除了null  其它都不等
            */
            function compareobj(A,B){
                if(A instanceof Array){
                    if(!(B instanceof Array)){
                        return false;
                    }
                    var aLen = A.length,
                        bLen = B.length;
                    if(aLen != bLen){
                        return false;
                    }
                    var isEqual = true,num = 0;
                    for(var i = 0;i < aLen;i++){
                        if(A[i]!=B[i] && typeof A[i]=='object' && typeof B[i]=='object'){
                          isEqual = arguments.callee.apply(null,[A[i],B[i]]);
                          //isEqual = compareobj(A[i],B[i]);
                        }else{
                          isEqual = A[i]===B[i];
                        }
                        if(isEqual){
                            num++;
                        }
                    }
                    if(num != aLen){
                        return false;
                    }else{
                        return true;
                    }
                }else if(A instanceof Date){
                    if(!(B instanceof Date)){
                        return false;
                    }else{
                        return A.getTime() == B.getTime();
                    }
                }else if(A instanceof Object){
                    if((B instanceof Array) || (B instanceof Date) || !(B instanceof Object)){
                        return false;
                    }else{
                       var aLen=bLen=0;
                       for(var i in A){
                            aLen++;
                       }
                       for(var i in B){
                            bLen++;
                       }
                       if(aLen != bLen){
                            return false;
                       }
                       var isEqual = true,num = 0;
                       for(var i in A){
                         if(typeof A[i] == 'object' && typeof B[i] == 'object' && A[i]!=B[i]){
                            isEqual = arguments.callee.apply(null,[A[i],B[i]]);
                           // isEqual = compareobj(A[i],B[i]);
                         }else{
                            isEqual = A[i]===B[i];
                         }
                         if(isEqual){
                            num++;
                         }
                       }
                       if(num != aLen){
                            return false;
                       }else{
                            return true;
                       }
                    }
                }else{
                    if(B instanceof Object){
                        return false;
                    }else{
                        return A===B;
                    }
                }
            }
分享到:
评论

相关推荐

    JavaScript中判断两个字符串是否相等的方法

    在JavaScript中判断两个字符串是否相等是编程基础中的重要内容,尤其对于初学者来说,理解字符串相等性的判断方法对于编写有效的代码至关重要。首先,要了解JavaScript提供了两种相等性运算符:“==”和“===”。这...

    js判断数组是否相等的方法

    在JavaScript中,判断两个数组是否相等是一个常见的需求,尤其在处理数据比较或者验证时。根据标题和描述,我们可以区分两种不同的场景: 1. **数组完全相等**:在这种情况下,不仅要求数组中的元素相同,而且元素...

    Javascript判断对象是否相等实现代码

    例如在表单验证、数据存储和查询等场景下,判断对象是否相等可以帮助我们有效地管理数据状态、优化用户界面表现。通过上述方法,我们能够根据对象的属性值以及属性类型,进行深层次的比较,从而做出准确的判断。这...

    一个微小的247B的工具类用于深度判断值是否相等

    在JavaScript开发过程中,有时我们需要深度比较两个值是否完全相等,包括它们的属性、元素以及嵌套的对象和数组。这通常在验证数据状态或者比较复杂结构时非常有用。标题提到的"一个微小的247B的工具类用于深度判断...

    JavaScript比较两个对象是否相等的方法

    本js代码通过对js对象进行各方面的比较来判断两个对象是否相等 cmp = function( x, y ) { // If both x and y are null or undefined and exactly the same if ( x === y ) { return true; } // If they are not ...

    JS判断两个数组或对象是否相同的方法示例

    这个函数首先检查两个对象是否严格相等,其次判断两个对象是否都是对象类型,并且具有相同的构造函数。然后,它会遍历两个对象的所有自有属性,对每个属性递归地调用`cmp`函数比较属性值。对于对象或数组类型的属性...

    JS判断两个对象内容是否相等的方法示例

    在JavaScript中,判断两个对象的内容是否相等是一个常见的需求,但JavaScript本身的相等运算符(`==` 和 `===`)并不能满足这种需求,因为它们只检查引用的相等性,而不是值的相等性。当涉及到复杂的数据结构,如...

    详解JS 比较两个Json对象的值是否相等的实例

    JSON对象在JavaScript中就是普通的对象,比较两个对象是否相等,就是比较两个对象的属性值是否完全相同。由于对象是引用类型,不能直接使用“==”或“===”来比较两个对象是否相等。这是因为“==”和“===”操作符...

    基于JavaScript判断两个对象内容是否相等

    这篇文章主要介绍了基于JavaScript判断两个对象内容是否相等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 ES6中有一个方法判断两个对象是否相等,这个方法...

    JavaScript中判断对象类型的几种方法总结

    这种方法在判断对象是否属于特定类型时非常有效,但当涉及到跨框架(iframe)的情况时,由于不同的框架创建的数组可能不共享相同的原型链,因此`instanceof`可能会失效。 3. `constructor`属性: 每个JavaScript...

    js判断两个数组是否完全相同

    在JavaScript(JS)中,判断两个数组是否完全相同是一个常见的需求,这可能涉及到对对象数组或字符串数组的比较。在编程实践中,数组的相同性不仅仅是元素数量的匹配,还需要考虑元素的顺序和值的精确匹配。下面我们...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    8、原生JavaScript判断是否为数字类型 9、原生JavaScript设置cookie值 10、原生JavaScript获取cookie值 11、原生JavaScript加入收藏夹 12、原生JavaScript设为首页 13、原生JavaScript判断IE6 14、原生JavaScript...

    javascript相等运算符与等同运算符

    在JavaScript编程语言中,相等运算符(`==`)与等同运算符(`===`)是两个非常重要的概念,它们用于判断两个值是否相等,但它们的比较方式和逻辑有所不同,这一点对于理解JavaScript的数据类型转换和比较规则至关...

    js验证日期格式,比较日期大小,判断两日期年月是否相同借鉴.pdf

    通过比较`getFullYear`和`getMonth`方法返回的值,我们可以判断两个日期是否处于相同的年份和月份。 ### 总结 以上三个函数提供了JavaScript中处理日期的基本能力:比较日期大小、验证日期格式以及判断两个日期...

    Javascript判断常用Demo

    JavaScript中的`RegExp`对象用于处理正则表达式,`test()`或`exec()`方法可以用于验证字符串是否符合特定的模式。例如,验证一个字符串是否为数字,可以使用`/^\d+$/.test(inputValue)`。 3. **判断GridView是否有...

Global site tag (gtag.js) - Google Analytics