js 对比两个对象、基本类型是否一致
这里需要理解的是基本类型,和对象 用 java 的话说就是(讲道理 js 理论应该类似) ,基本类型在栈区,可以直接比较其值,
对象类型 存放于栈区 和 堆区,栈区存放的是对象在堆区的内存地址,直接对比相当于在对比地址,那么两个不同对象的地址必然不同
那么 ,我们先来看看 js 中关于 基本类型的对比方式 (讲道理java差不多,很尴尬的就是一个后端没有系统性学习前端,那么就会出现,各种把东西往后端上套的做法,实数无奈)
1. == 运算符会对它两边的操作数做隐式类型转换 如此就会出现 null == false == undefined == '' true == 1 == '1' 等等
2. === 运算符不会对两边的值进行转换,且他要求两边的值 类型 及 值 完全一致 +0 === -0 true,但 NaN === NaN 为 false
3. Object.is 需要注意的是 Object.is(NaN,NaN) true; Object.is(+0, -0) false;
对比对象是否相同就不能用上面的方式了,否则会一直在对比两个对象的内存地址串
那么,对比对象的思路是什么呢
1,首先对比两个对象的 key 长度是否一致,这个很容易刷下一批,当然也分场景,比如这些对象都来自后端的一个 bean 或者 entity 或者叫 POJO ,此时就不需要对比
2,然后 在用其中一个对象的 key 对应的 val ,对比另一个对象该 key 值对象的 val 是否相等,此时会触发递归,因为对象的属性值也可能是一个对象,StackOverflowException 小心哦
当然也分场景,若是和 1 中后面场景相同,那么,返回的对象中属性顺序也应该是相同的,若是后端没有特殊处理的话,直接取自数据库,那么简便方法是对比两个对象 JSON.stringfy(Obj)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库