当前位置: 首页 > news >正文

js来比较两个对象内容有误差异

前言:

        封装js方法来比较两个对象内容有误差异。

思路:

        通过循环对象的方法,Object.keys,拿到对象后,比较他的内容,根据类型,如果是普通类型,直接比较,如果是引用类型则比较长度与内容。

调用:

!this.deepCompare(obj1[key], obj2[key]

封装方法内容:

// 封装的对象属性对比方法,返回true/falsedeepCompare(obj1, obj2) {// 处理基本类型和null/undefinedif (obj1 === obj2) return true;if (typeof obj1 !== 'object' || obj1 === null ||typeof obj2 !== 'object' || obj2 === null) {return false;}// 获取所有属性键(包括原型链上的可枚举属性)const keys1 = Object.keys(obj1);const keys2 = Object.keys(obj2);// 属性数量不同则对象不同if (keys1.length !== keys2.length) return false;// 检查所有属性for (const key of keys1) {// 确保obj2也有这个属性if (!obj2.hasOwnProperty(key)) return false;const val1 = obj1[key];const val2 = obj2[key];// 如果属性值是数组if (Array.isArray(val1) && Array.isArray(val2)) {// 数组长度不同if (val1.length !== val2.length) return false;// 深度比较数组元素for (let i = 0; i < val1.length; i++) {if (!this.deepCompare(val1[i], val2[i])) return false;}} else if (typeof val1 === 'object' && val1 !== null &&typeof val2 === 'object' && val2 !== null) {// 如果属性值是对象递归比较嵌套对象if (!this.deepCompare(val1, val2)) return false;} else if (val1 !== val2) {// 基本类型直接比较return false;}}return true;}

http://www.dtcms.com/a/343275.html

相关文章:

  • 从源码中学习Java面向对象的多态
  • 通过自定义域名访问内网的web服务和tcp应用:内网ip到局域网外域名访问过程
  • 使用Docker部署Coze Studio开源版
  • (亲测)Centos7升级gcc 9
  • XTDrone——无人机基于2D激光Lidar进行二维运动规划(细节提醒以及相关报错解决)
  • 嵌入式-中断的概念,优先级,编程-Day17
  • 高效研发管理新选择:Codes 一站式平台深度解析
  • 6.Shell脚本修炼手册---grep命令使用指南
  • 定时器(Timer)和延时器
  • 文化遗产数字化对手持SLAM设备有哪些特殊要求?
  • 使用 X11 转发服务器界面
  • linux安装mysql ndb cluster
  • 牛客:链表分割算法详解
  • Java设计模式-享元模式
  • FreeRTOS学习笔记(三)--汇编指令
  • C ++代码学习笔记(一)
  • Layui 中的 iframe 详解与最佳实践
  • Linux笔记7——shell编程基础-1
  • SMT车间如何通过防静电监控系统提升产品质量
  • 206.反转链表
  • 【时时三省】vectorCAST 便捷使用技巧
  • 利用 Python 爬虫获取淘宝商品评论实战指南
  • 并发编程原理与实战(二十五)手写简易线程池实战,剖析线程状态转换过程
  • 【LINUX网络】UDP协议基础原理
  • Netty AdaptiveRecvByteBufAllocator原理详解
  • 分布式消息队列技术(原理相关):Kafka
  • 机器学习3
  • 《WINDOWS 环境下32位汇编语言程序设计》第6章 定时器和Windows时间
  • Git 版本控制核心流程与协作指南(从入门到冲突解决)
  • windows下jdk环境切换为jdk17后,临时需要jdk1.8的处理