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

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.xdnf.cn/news/18323.html

相关文章:

  • mysql数据库学习
  • 想在手机上操作服务器?cpolar让WaveTerminal终端随身携带,效率倍增
  • 【Springboot进阶】Java切面编程对性能的影响深度分析
  • 【Ruoyi解密-02.登录流程:】登录-找密码不抓瞎
  • selenium3.141.0执行JS无法传递element解决方法
  • Linux的奇妙冒险——进程间通信(管道、SystemV IPC)
  • 完全背包(模板)
  • webrtc中win端音频---windows Core Audio
  • 2025图表制作完全指南:设计规范、工具选型与行业案例
  • Chrome/360 浏览器扩展深度解析:内置扩展与普通扩展的实现机制对比
  • (栈)Leetcode155最小栈+739每日温度
  • 力扣 30 天 JavaScript 挑战 第37天 第九题笔记 知识点: 剩余参数,拓展运算符
  • Spring Boot集成腾讯云人脸识别实现智能小区门禁系统
  • 【C++去除整数某一位数字求新数和倍数保留2位小数控制】2022-10-22
  • 人工智能 -- 循环神经网络day1 -- 自然语言基础、NLP基础概率、NLP基本流程、NLP特征工程、NLP特征输入
  • 打造医疗新质生产力
  • 如何用算力魔方4060安装PaddleOCR MCP 服务器
  • visual studio更改git提交的用户名和邮件
  • Seaborn数据可视化实战:Seaborn基础与实践-数据可视化的艺术
  • 高效处理NetCDF文件经纬度转换:一个纯CDO驱动的Bash脚本详解
  • [大模型微调]基于llama_factory用 LoRA 高效微调 Qwen3 医疗大模型:从原理到实现
  • WPF中UI线程频繁操作造成卡顿的处理
  • 中文房间悖论:人工智能理解力的哲学拷问
  • 深度解析游戏引擎中的相机:视图矩阵
  • 小体积晶振1610/2016/3225选型参数
  • 小游戏AssetBundle加密方案解析
  • 5.Shell脚本修炼手册---Linux正则表达式(Shell三剑客准备启动阶段)
  • 电能质量监测装置 分布式光伏安全并网“准入证”
  • 8.21 随机森林
  • conda create 报错:Unable to read repodata JSON(镜像 pkgs/free 导致)