基于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 操作Word和Excel的实现代码
Oct 26 Javascript
MultiSelect左右选择控件的设计与实现介绍
Jun 08 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
javascript常用的方法整理
Aug 20 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
Mar 14 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
Apr 13 Javascript
vue打包后显示空白正确处理方法
Nov 01 Javascript
在Swiper内如何制作CSS3动画效果示例代码
Dec 07 Javascript
node中间层实现文件上传功能
Jun 11 Javascript
Vue项目中添加锁屏功能实现思路
Jun 29 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
Apr 22 Javascript
vue 监听 Treeselect 选择项的改变操作
Aug 31 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 验证码的实现代码
2011/07/17 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
python非递归全排列实现方法
2017/04/10 Python
python中的闭包函数
2018/02/09 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
HTML5未来发展趋势
2016/02/01 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
波兰购物网站:MALL.PL
2019/05/01 全球购物
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
《匆匆》教学反思
2014/02/22 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
教师先进事迹材料
2014/12/16 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书