添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
粗眉毛的薯片  ·  像素操作 - Web API | MDN·  3 月前    · 
细心的手术刀  ·  esbuild - API - ...·  3 月前    · 
大鼻子的镜子  ·  esbuild - API | ...·  3 月前    · 

毫无疑问js中对象是引用类型的对象,记录的是地址值,这时候用“==”亦或是“===”已经无法判断两个对象的内容是否相等了。看了很多人的帖子,感觉 https://www.cnblogs.com/cuew1987/p/4057726.html 这个是我找到可读性最好的。亲测可用!

方法如下:

 function isObjectValueEqual(a, b) {   
     //取对象a和b的属性名
    var aProps = Object.getOwnPropertyNames(a);
    var bProps = Object.getOwnPropertyNames(b);
     //判断属性名的length是否一致
    if (aProps.length != bProps.length) {
        return false;
     //循环取出属性名,再判断属性值是否一致
    for (var i = 0; i < aProps.length; i++) {
        var propName = aProps[i];
        if (a[propName] !== b[propName]) {
            return false;
    return true;
var obj1 = { name: "Benjamin", sex : "male"};
var obj2 = { name: "Benjamin", sex : "male"};
var obj3 = obj1;//obj1和ob3的指针指向了内存中的同一个地址
console.log(isObjectValueEqual(obj1, obj2));//true
console.log(obj1 == obj3);//Outputs: true
console.log(obj1 === obj3);//Outputs: true
console.log(obj2 == obj3);//Outputs: false
console.log(obj2 === obj3);//Outputs: false
本文实例讲述了JavaScript比较 两个 对象 是否 相等 的方法。分享给大家供大家参考。具体如下: 在Python中可以通过cmp()内建函数来比较 两个 对象 所包涵的数据 是否 相等 (数组、序列、字典)。但是在javascript语言中并没有相关的实现。本 js 代码通过对 js 对象 进行各方面的比较来 判断 两个 对象 是否 相等 cmp = function( x, y ) { // If both x and y are null or undefined and exactly the same if ( x === y ) { return true; // If they are not stric 2. Object.getOwnPropertyNames() 获取 对象 的可枚举和不可枚举属性 3. Object.getOwnPropertySymbols() 获取 对象 的symbol属性 4. Object.keys() 获取 对象 的可枚举属性 5. for...in 获取 对象 自身和继承的可枚举属性(配合hasOwnProperty()使用) 6. for...of 获取 对象 自身可... 前言:如何 判断 两个 对象 是否 相等 两个 Object类型 对象 ,即使拥有相同属性、相同 ,当使用 == 或 === 进行比较时,也不认为他们 相等 。这就是因为他们是通过引用(内存里的位置)比较的,不像基本类型是通过 比较的。 var obj1 = { name: "xiaoming", sex : "male" var obj2 = { name: "xiaoming... // 返回 类型boolean function ObjectEquel(obj1,obj2){ let a = Array.from(new Map(Object.entries(obj1))) let b = Array.from(new Map(Object.entries(obj2))) let i = 0 a.forEach((item,index)=>{ if(b[inde console.log(obj1===obj2) 打印都为false,虽然他们模样一样,当需要 判断 对象 的形状和内容都一样的时候,就比如上面的obj1、obj2,怎么办呢?它来了 完整代码: // 判断 两个 对象 是否 相同(包含绝对 相等 和他们 是否 function isObjectValueEqual(a, b) { var aProps = Object.getOwnPropertyNames(a); var bProps = Objec. function isObjectValueEqual(a, b) { var aProps = Object.getOwnPropertyNames(a); var bProps = Object.getOwnPropertyNames(b); if (aProps.length... 最近项目中有遇到在点击切换按钮的时候,要 判断 当前页面的数据有没有发生修改,如果发生了修改,则提示 是否 保存的功能。 刚开始觉得很麻烦,后来想了一个办好,将页面初始化和点击切换时的数据写成li 在日常开发中, 判断 两个 数据 是否 相等 是再常见不过的事,偶然回想起之前刚接触 JS 的时候,曾被一段代码困扰过,直接上代码来看看吧~~乍一看,这不就 两个 对象 吗,然后 判断 是否 相等 ,一个 ‘==’ 不就搞定咯。咋还扯出两种方法呢,而且答案还不一样?今天便总结一下如何去 判断 两个 对象 是否 相等 ,给以前的自己上一课~~手动滑稽在 判断 两个 类型的数据 是否 相等 时,便已足够完成任务,但当其遇到引用类型的数据时,就只能灰溜溜的跑了,原因则是因为当 两个 引用类型的数据在进行比较时,比较的是其在栈中的地址,而不是比较其在堆中的数据(哪怕数据 ① 方法一:通过 JS ON.stringify(obj)来 判断 两个 对象 转后的字符串 是否 相等 优点:用法简单,对于顺序相同的 两个 对象 可以快速进行比较得到结果缺点:这种方法有限制就是当 两个 对比的 对象 中key的顺序不是完全相同时会比较出错 ② 方法二: 较为简单的方法,如下 //比较2个 对象 是否 相同 function isObjEqual(o1,o2){ var props1 = Object.getOwnPropertyNames(o1); var props2 = Object.getOwn