基于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 相关文章推荐
js 格式化时间日期函数小结
Mar 20 Javascript
jquery单行文字向上滚动效果示例
Mar 06 Javascript
jQuery元素选择器用法实例
Dec 23 Javascript
javascript中一些util方法汇总
Jun 10 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
Jan 12 Javascript
noty ? jQuery通知插件全面解析
May 18 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
Jun 08 Javascript
jQuery EasyUI封装简化操作
Sep 18 Javascript
javascript深拷贝和浅拷贝详解
Feb 14 Javascript
Bootstrap面板(Panels)的简单实现代码
Mar 17 Javascript
jQuery自定义图片上传插件实例代码
Apr 04 jQuery
Angularjs之如何在跨域请求中传输Cookie的方法
Jun 01 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 access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
php实现插入排序
2015/03/29 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
实例讲解php数据访问
2016/05/09 PHP
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
python缩进区别分析
2014/02/15 Python
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
python计算两个数的百分比方法
2018/06/29 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
Python代码太长换行的实现
2019/07/05 Python
Python for循环及基础用法详解
2019/11/08 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
python离线安装外部依赖包的实现
2020/02/13 Python
python实现拼图小游戏
2020/02/22 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
心得体会开头
2014/01/01 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
MySQL 5.7常见数据类型
2021/07/15 MySQL
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis