基于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 定义初始化数组函数
Sep 07 Javascript
非阻塞动态加载javascript广告实现代码
Nov 17 Javascript
js获取url中指定参数值的示例代码
Dec 14 Javascript
JavaScript获取按钮所在form表单id的方法
Apr 02 Javascript
深入理解JS DOM事件机制
Aug 06 Javascript
localStorage实现便签小程序
Nov 28 Javascript
浅析BootStrap中Modal(模态框)使用心得
Dec 24 Javascript
js中作用域的实例解析
Mar 16 Javascript
Node接收电子邮件的实例代码
Jul 21 Javascript
微信小程序HTTP接口请求封装的实现
Feb 21 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
Jan 12 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 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框架排名
2013/07/04 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
javascript简易画板开发
2020/04/12 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
vue实现图片上传功能
2020/05/28 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
Python基于PycURL实现POST的方法
2015/07/25 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
python 基于opencv去除图片阴影
2021/01/26 Python
2014年三万活动总结
2014/04/26 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
离婚起诉书范本
2015/05/18 职场文书
分析Java中Map的遍历性能问题
2021/06/26 Java/Android