`
lmh2072005
  • 浏览: 111323 次
  • 性别: 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比较两个对象是否相等的方法

    本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 ...

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

    想判断2个js对象,是不是所有完全相同在表单页面应用是很常见的,接下来分享一段判断代码,感兴趣的你可以参考下哈,希望可以帮助到你

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

    我们知道,如果两个对象即使内容,JavaScript也会判断它们不相等。但是有时候,我们仅仅需要判断两个对象的内容是否相等。那么我们应该如何做到且考虑周全呢?比如说0和-0,null和undefined,是不相等的,NaN和NaN...

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

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

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

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

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

    主要介绍了JS判断两个数组或对象是否相同的方法,结合实例形式分析了javascript针对简单数组与对象进行判断的相关操作技巧,需要的朋友可以参考下

    JavaScript比较两个数组的内容是否相同(推荐)

    目前JavaScript没有内置的操作符判断对象的内容是否相同。 但是惯性思维让人以为数组也是值,是可以比较的。 如果要比较数组是否相等,就只能遍历数组元素比较。 在网上流传很普遍的一种做法是将数组转换成字符串: ...

    javascript常用判断

    2.2:比较两个表单项的值是否相同 2.3:表单只能为数字和"_", 2.4:表单项输入数值/长度限定 2.5:中文/英文/数字/邮件地址合法性判断 2.6:限定表单项不能输入的字符 2.7表单的自符控制 2.8:form文本域的通用校验函数

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

    此模块支持所有类型的比较,包括Function,RegExp,Date,null,undefined和NaN值。对象和数组是递归遍历的。

    javascript如何判断数组内元素是否重复的方法集锦

    javascript如何判断数组内元素是否重复的方法集锦

    javascript表单验证大全

    2.2:比较两个表单项的值是否相同 2.3:表单只能为数字和"_", 2.4:表单项输入数值/长度限定 2.5:中文/英文/数字/邮件地址合法性判断 2.6:限定表单项不能输入的字符 2.7表单的自符控制 2.8:form文本域的通用校验...

    javascript学习笔记.docx

    8) 关闭窗口用window.close()方法,窗口关闭后,代表它的Window对象可能还生存,可用closed属性进行判断它是否已经被关闭。 9) 控制窗口几何大小可用moveTo()、moveBy()、resizeTo()、resizeBy()。滚动可用scrollTo...

    程序天下:JavaScript实例自学手册

    1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 判断网页加载完毕 1.23 嵌入...

    使用FP-TS相等性检查而不是浅层(参考)对象比较来进行React的稳定钩子-JavaScript开发

    通过默认,React将对两个对象执行JavaScript对象引用比较,否则称为浅对象比较,这将导致对fp-ts数据类型的“不变”值进行额外的重新渲染。 例如:使用fp-ts类型,例如Option,其基础数据结构是{_tag:“ Some”,...

    《程序天下:JavaScript实例自学手册》光盘源码

    1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 判断网页加载完毕 1.23 嵌入...

    js数组相减简单示例【删除a数组所有与b数组相同元素】

    主要介绍了js数组相减,结合简单示例形式分析了JavaScript删除a数组所有与b数组相同元素相关个遍历、判断、删除等相关操作技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics