手机版

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

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

本文实例讲述了射流研究…判断两个对象内容是否相等的方法。分享给大家供大家参考,具体如下:

我们知道,如果两个对象即使内容,JavaScript也会判断它们不相等。但是有时候,我们仅仅需要判断两个对象的内容是否相等。那么我们应该如何做到且考虑周全呢?比如说0和-0,空和未定义,是不相等的,NaN和圆盘烤饼默认是不相等的。我写了一个isEqual方法,考虑到了诸多方面,代码如下:

!DOCTYPE html html head meta charset=' utf-8 ' title/title/head body/body script type=' text/JavaScript '/isEqual:判断两个对象是否键值对应相等函数isEqual(a,b){ //如果a和b本来就全等if(a===b){ //判断是否为0和-0返回a!==0 | | 1/a===1/b;} //判断是否为空和未定义的if(a==null | | b==null){ 0返回a===b;} //接下来判断a和b的数据类型var类名A=toString.call(a),类名b=tostring。呼叫(b);//如果数据类型不相等,则返回如果(类名a!==CLaSS NameB){ 0返回false} //如果数据类型相等,再根据不同数据类型分别判断switch(class namea){ case "[object RegExp]" : case "[object String]" ://进行字符串转换比较返回" a===" b;案例"[对象编号]"://进行数字转换比较,判断是否为NaN if(a!==a){ 0返回b!==b;} //判断是否为0或-0返回a===0?1/a===1/b : a===b;案例"[对象日期]":案例"[对象布尔值]":返回a===b;} //如果是对象类型如果(类名a='[对象对象]'){ //获取a和b的属性长度var propsA=对象。getowntpropertynames(a),propsB=object。getowntpropertynames(b);if(propsA.length!=ProPSB。长度){ return false} for(var I=0;ipropa . lengthi){ var PropName=PropSA[I];//如果对应属性对应值不相等,则返回如果(a[propName]!==b[PrOpname]){ return false;} }返回true} //如果是数组类型如果(类名a='[对象数组]'){ if(a . ToString()==b . ToString()){ 0返回真}返回false } }//testvar obj 1={ name : ' Liu ',年龄:22 };var obj2={name:'liu ',年龄:22 };var obj3={name:'liu ',年龄:33 };var state1=isEqual(obj1,obj 2);var state2=isEqual(obj1,obj 3);console.log(状态1);//真控制台。日志(状态2);//falsevar state3=isEqual(null,未定义);console.log(状态3);//falsevar state4=isEqual(NaN,NAn);console.log(状态4);//truevar arr1=[1,2,3];var arr2=[1,2,3];var arr3=[1,23];var state5=isEqual(arr1,arr 2);console.log(状态5);//truevar state6=isEqual(arr1,arr 3);console.log(状态6);//false/script/html运行效果图如下:

更多关于Java脚本语言相关内容可查看本站专题: 《javascript面向对象入门教程》 、 《JavaScript中json操作技巧总结》 、 《JavaScript切换特效与技巧总结》 、 《JavaScript查找算法技巧总结》 、 《JavaScript动画特效与技巧汇总》 、 《JavaScript错误与调试技巧总结》 、 《JavaScript数据结构与算法技巧总结》 、 《JavaScript遍历算法与技巧总结》 及《JavaScript数学运算用法总结》

希望本文所述对大家Java脚本语言程序设计有所帮助。

版权声明:JS判断两个对象内容是否相等的方法示例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。