基于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 相关文章推荐
不错的asp中显示新闻的功能
Oct 13 Javascript
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
jQuery中next方法用法实例
Apr 24 Javascript
javascript实现类似百度分享功能的方法
Jul 27 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
Oct 19 Javascript
AngularJs+Bootstrap实现漂亮的计算器
Aug 10 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
Jan 18 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
Oct 20 Javascript
详解mpvue中小程序自定义导航组件开发指南
Feb 11 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
layui table单元格事件修改值的方法
Sep 24 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
Apr 20 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版)
2006/10/09 PHP
php cout<<的一点看法
2010/01/24 PHP
php教程之phpize使用方法
2014/02/12 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
joomla组件开发入门教程
2016/05/04 PHP
nodejs之请求路由概述
2014/07/05 NodeJs
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
全面了解js中的script标签
2016/07/04 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
Python实现从百度API获取天气的方法
2015/03/11 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
Python 去除字符串中指定字符串
2020/03/05 Python
详解pandas映射与数据转换
2021/01/22 Python
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
致400米运动员广播稿
2014/02/07 职场文书
自动一体化专业求职信
2014/03/15 职场文书
英文请假条
2014/04/11 职场文书
产品发布会策划方案
2014/05/12 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
男方婚礼答谢词
2015/01/20 职场文书
学生会招新宣传语
2015/07/13 职场文书
诚信考试主题班会
2015/08/17 职场文书