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


Posted in Javascript onJanuary 10, 2020

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

ES6中有一个方法判断两个对象是否相等,这个方法判断是两个对象引用地址是否一致

let obj1= {
  a: 1
 }
 let obj2 = {
  a: 1
 }
console.log(Object.is(obj1, obj2)) // false

let obj3 = obj1
console.log(Object.is(obj1, obj3)) // trueconsole.log(Object.is(obj2, obj3)) // false

当需求是比较两个对象内容是否一致时就没用了。

想要比较两个对象内容是否一致,思路是要遍历对象的所有键名和键值是否都一致:

1、判断两个对象是否指向同一内存

2、使用Object.getOwnPropertyNames获取对象所有键名数组

3、判断两个对象的键名数组是否相等

4、遍历键名,判断键值是否都相等

let obj1 = {
  a: 1,
  b: {
   c: 2
  }
 }
 let obj2 = {
  b: {
   c: 3
  },
  a: 1
 }
 function isObjectValueEqual(a, b) {
  // 判断两个对象是否指向同一内存,指向同一内存返回true
  if (a === b) return true
  // 获取两个对象键值数组
  let aProps = Object.getOwnPropertyNames(a)
  let bProps = Object.getOwnPropertyNames(b)
  // 判断两个对象键值数组长度是否一致,不一致返回false
  if (aProps.length !== bProps.length) return false
  // 遍历对象的键值
  for (let prop in a) {
   // 判断a的键值,在b中是否存在,不存在,返回false
   if (b.hasOwnProperty(prop)) {
    // 判断a的键值是否为对象,是则递归,不是对象直接判断键值是否相等,不相等返回false
    if (typeof a[prop] === 'object') {
     if (!isObjectValueEqual(a[prop], b[prop])) return false
    } else if (a[prop] !== b[prop]) {
     return false
    }
   } else {
    return false
   }
  }
  return true
 }
 console.log(isObjectValueEqual(obj1, obj2)) // false

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript的面向对象方法以及差别
Mar 31 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
Jan 24 Javascript
JS常用字符串处理方法应用总结
May 22 Javascript
javascript转换静态图片,增加粒子动画效果
May 28 Javascript
JS实现网页标题随机显示名人名言的方法
Nov 03 Javascript
详解Document.Cookie
Dec 25 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
Mar 23 jQuery
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
使用jQuery实现动态添加小广告
Jul 11 jQuery
详解在Vue中有条件地使用CSS类
Sep 30 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
Aug 24 Javascript
vue+element加入签名效果(移动端可用)
Jun 17 Javascript
jQuery操作事件完整实例分析
Jan 10 #jQuery
jQuery操作元素追加内容示例
Jan 10 #jQuery
基于JS判断对象是否是数组
Jan 10 #Javascript
JS数组属性去重并校验重复数据
Jan 10 #Javascript
JS图片懒加载的优点及实现原理
Jan 10 #Javascript
jQuery操作元素的内容和样式完整实例分析
Jan 10 #jQuery
jquery选择器和属性对象的操作实例分析
Jan 10 #jQuery
You might like
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
php中JSON的使用与转换
2015/01/14 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
用javascript实现画板的代码
2007/09/05 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
jquery层次选择器的介绍
2019/01/18 jQuery
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
js实现车辆管理系统
2020/08/26 Javascript
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
python剪切视频与合并视频的实现
2020/03/03 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
护理专业应届毕业生推荐信
2013/11/15 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
会计顶岗实习心得
2014/01/25 职场文书
医药个人求职信范文
2014/01/29 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
大二学生自我检讨书
2014/10/23 职场文书
团员个人年度总结
2015/02/26 职场文书
植树节新闻稿
2015/07/17 职场文书
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android