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) 

 

posted @   南巷清风--大R  阅读(170)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示