基于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 图片缩放效果代码
Jun 09 Javascript
jQuery阻止同类型事件小结
Apr 19 Javascript
jquery显示隐藏input对象
Jul 21 Javascript
一个JavaScript去除字符串末尾的空白实例代码
Sep 22 Javascript
基于jquery实现的仿优酷图片轮播特效代码
Jan 13 Javascript
如何提高数据访问速度
Dec 26 Javascript
Express之get,pos请求参数的获取
May 02 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
javascript实现电脑和手机版样式切换
Nov 10 Javascript
webpack的CSS加载器的使用
Sep 11 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
Feb 09 Javascript
jQuery实现倒计时功能完整示例
Jun 01 jQuery
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用户注册信息验证正则表达式
2015/11/12 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
利用js对象弹出一个层
2008/03/26 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
python gdal安装与简单使用
2019/08/01 Python
Python字节单位转换实例
2019/12/05 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
应用艺术专业个人的自我评价
2014/01/03 职场文书
超市促销活动方案
2014/03/05 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
银行服务理念口号
2015/12/25 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
四年级作文之植物
2019/09/20 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
Python机器学习三大件之一numpy
2021/05/10 Python
Python基础之条件语句详解
2021/06/16 Python