基于JavaScript判断两个对象内容是否相等
这篇文章主要介绍了基于JavaScript判断两个对象内容是否相等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
ES6中有一个方法判断两个对象是否相等,这个方法判断是两个对象引用地址是否一致
letobj1={ a:1 } letobj2={ a:1 } console.log(Object.is(obj1,obj2))//false letobj3=obj1 console.log(Object.is(obj1,obj3))//trueconsole.log(Object.is(obj2,obj3))//false
当需求是比较两个对象内容是否一致时就没用了。
想要比较两个对象内容是否一致,思路是要遍历对象的所有键名和键值是否都一致:
1、判断两个对象是否指向同一内存
2、使用Object.getOwnPropertyNames获取对象所有键名数组
3、判断两个对象的键名数组是否相等
4、遍历键名,判断键值是否都相等
letobj1={ a:1, b:{ c:2 } } letobj2={ b:{ c:3 }, a:1 } functionisObjectValueEqual(a,b){ //判断两个对象是否指向同一内存,指向同一内存返回true if(a===b)returntrue //获取两个对象键值数组 letaProps=Object.getOwnPropertyNames(a) letbProps=Object.getOwnPropertyNames(b) //判断两个对象键值数组长度是否一致,不一致返回false if(aProps.length!==bProps.length)returnfalse //遍历对象的键值 for(letpropina){ //判断a的键值,在b中是否存在,不存在,返回false if(b.hasOwnProperty(prop)){ //判断a的键值是否为对象,是则递归,不是对象直接判断键值是否相等,不相等返回false if(typeofa[prop]==='object'){ if(!isObjectValueEqual(a[prop],b[prop]))returnfalse }elseif(a[prop]!==b[prop]){ returnfalse } }else{ returnfalse } } returntrue } console.log(isObjectValueEqual(obj1,obj2))//false
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。