精华内容
下载资源
问答
  • js判断两个对象的属性值是否相等
    2022-07-28 15:16:55

    对象不可以直接==判断是否相等,由于对象是由键值对构成的,那要判断对象相等,只要判断两个对象的键、值是否都相同,如果相同就代表它们相等,反之不相等。

      思路:
    使用Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
    比对键名数组的长度是否相等,不相等则返回false。相等进行下一步。
    比对键名对应的键值是否相等。

      let onj1 = {
        a: 1,
        b: 2
      }
      let onj2 = {
        b: 2,
        a: 1
      }
    
      function isObjectValueEqual(a, b) {
        var aProps = Object.getOwnPropertyNames(a);//得到aProps值为['a','b']
        var bProps = Object.getOwnPropertyNames(b);
    
        if (aProps.length !== bProps.length) {
          return false;
        }
    
        for (var i = 0; i < aProps.length; i++) {
          var propName = aProps[i];
          var propA = a[propName];
          var propB = b[propName];
          if (propA !== propB) {
            return false;
          }
        }
        return true;
      }
      console.log(isObjectValueEqual(onj1, onj2)) // true
    
    更多相关内容
  • 本文实例讲述了JS判断两个对象内容是否相等的方法。分享给大家供大家参考,具体如下: 我们知道,如果两个对象即使内容,JavaScript也会判断它们不相等。但是有时候,我们仅仅需要判断两个对象的内容是否相等。那么...
  • 本文实例讲述了JS判断两个数组或对象是否相同的方法。分享给大家供大家参考,具体如下: JS 判断两个数组是否相同判断2个数组是否相同,首先要把数组进行排序,然后转换成字符串进行比较。 JSON.stringify([1,2,...
  • js判断两个对象的对应属性值是都一致

    1. 举例

    form1:{name:'zs',age:12}
    form2:{name:'zs',age:13}
    form3:{name:'zs',age:12}
    
    objectEqual(form1,form2) // false
    objectEqual(form1,form3) // true
    

    2.代码

    objectEqual(a, b) {
     if (Object.keys(a).length !== Object.keys(b).length) {
      return false
     }
     for (let key in a) {
      if (b[key] === undefined) {
       return false
      }
      if (a[key] !== b[key]) {
       return false
      }
     }
     return true
    }
    
    展开全文
  • JS判断两个对象是否相等

    千次阅读 2021-11-09 12:26:51
    ① 方法一:通过JSON.stringify(obj)来判断两个对象转后的字符串是否相等 优点:用法简单,对于顺序相同两个对象可以快速进行比较得到结果 缺点:这种方法有限制就是当两个对比的对象中key的顺序不是完全相同时会...

    ① 方法一:通过JSON.stringify(obj)来判断两个对象转后的字符串是否相等

    优点:用法简单,对于顺序相同的两个对象可以快速进行比较得到结果
    缺点:这种方法有限制就是当两个对比的对象中key的顺序不是完全相同时会比较出错

    ② 方法二:有递归的情况 ,对象里包含 对象 和 数组 

     function equals(a, b) {
            let ArrayA = Object.getOwnPropertyNames(a)
            let ArrayB = Object.getOwnPropertyNames(b)
         
    
            if (ArrayA.length != ArrayB.length) return false
            console.log(a)
            for (let i = 0; i < ArrayA.length; i++) {
                let propNameA = ArrayA[i]
                let propNameB = ArrayB[i]
              
                if (!a.hasOwnProperty(propNameB)) return false;
    
                if(a instanceof Object){
                    if(equals(a[propNameA],b[propNameA])){
    
                    }else{ return false; }
                }else{
                    if (a[propNameA]===b[propNameA]) {
                        
                    }else{
                        return false;
                    }
                }
                
                return true;

    步骤: 1. 判断对象属性的长度是否一致

                2.for循环,判断A对象里是否包含B的属性

                3.然后判断 A对象的属性是否是 对象属性,如果是,再调用一次本函数

                 4.判断A的属性值是否等于B的属性值   

    tip: 这里提示下:

    1. keys()  输出为一个数组,取到的是 obj 的所有的自身可枚举属性。其功能和for in + hasOwnProperty()功能是一致的
    2. getOwnPropertyNames() 输出为一个数组,取到的是 obj 的所有自身属性。(可枚举、不可枚举,但不包括symbol类型的属性)
    3. getOwnPropertySymbol()  输出为一个数组,取到的是 obj 的所有自身的Symbol属性
    4. for(key in obj)  遍历 obj 的所有属性,包括自身属性和原型上的所有可枚举的属性
    5. JSON.stringify()  只能将自身的可枚举的属性转化成字符串

    一般遍历的都是可枚举属性,且不包括Symbol,除了getOwnPropertyNames()。

    展开全文
  • js判断两个对象属性值是否一致

    千次阅读 2019-07-01 14:31:00
    我们使用 == 或者 === 已经无法判断两个对象属性值是否相等。 code:(Fn) // 对比两个对象值是否完全相等 返回值 true/false isObjectValueEqual (a, b) { //取对象a和b的属性名 var aProps =...

    毫无疑问,js中的对象是引用类型的对象。我们使用 == 或者 === 已经无法判断两个对象的属性和值是否相等。

     

    code:(Fn)

        // 对比两个对象的值是否完全相等 返回值 true/false
        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

     

    1.   function isObjectValueEqual(a, b) {   
    2.  
       
    3.  
            //取对象a和b的属性名
    4.  
       
    5.  
           var aProps = Object.getOwnPropertyNames(a);
    6.  
       
    7.  
           var bProps = Object.getOwnPropertyNames(b);
    8.  
       
    9.  
            //判断属性名的length是否一致
    10.  
       
    11.  
           if (aProps.length != bProps.length) {
    12.  
       
    13.  
               return  false;
    14.  
       
    15.  
          }
    16.  
       
    17.  
            //循环取出属性名,再判断属性值是否一致
    18.  
       
    19.  
           for ( var i = 0; i < aProps.length; i++) {
    20.  
       
    21.  
               var propName = aProps[i];
    22.  
       
    23.  
               if (a[propName] !== b[propName]) {
    24.  
       
    25.  
                   return  false;
    26.  
       
    27.  
              }
    28.  
       
    29.  
          }
    30.  
       
    31.  
           return  true;
    32.  
       
    33.  
      }
    34.  
    展开全文
  • 通常情况下JS要 obj1 === obj2 是检查两个变量所指向的对象是否相同,如果我们要检查两个不同的对象的所有属性值是否相等,用obj1 === obj2是不行的,这个时候就要遍历两个对象的所有属性是否相等,遇到对象属性是...
  • 需求背景:有两个对象数组A和B,当B数组中某个对象属性值和A数组中对象属性值相同时,需要将A数组的当前对象添加一个新属性。 let A = [{projectId:"1",projectName:"项目一",status:"0"},{projectId:"2",...
  • let arr = [ {name: '张三',sex:... 我需要判断其中两个对象中name属性值和sex属性值是否相同,只要其中两个属性值相同,就返回true,否则返回false。(并不是只跟第一个或第二个相比较,是所有的对象都要相互比较)
  • js判断两个对象值是否相等

    万次阅读 2018-10-19 11:19:33
    毫无疑问js对象是引用类型的对象,记录的是地址,这时候用“==”亦或是“===”已经无法判断两个对象的内容是否相等了。看了很多人的帖子,感觉https://www.cnblogs.com/cuew1987/p/4057726.html这个是我找到...
  • 先定义两个对象 const obj1 = { a: 100, b: { x: 100, y: 200 } } const obj2 = { a: 100, b: { x: 100, y: 200 } } 是否对象 function isObject(obj) { return typeof obj === 'object' && ...
  • var arr = [ { class: '1', name: 张三, sum: 2 }, { class: '1', name: 张三, sum: 7 }, { class: '1', ... '2', name: 王五, sum: 4 }, ] 判断 name和 class 是否相同 相同 sum 就相加 拿到 相加都得
  • js判断两个对象是否相等---2种方式

    千次阅读 2020-09-30 17:44:17
    但有一缺点:当对象里key的顺序不一致时,比较就会出问题了。并且在JSON.stringify()时,一些特殊类型的,比如undefined,Date,RegExp等会丢失或者变形。 var obj1={ name:111, age:222, dis:[1,2,3,4],...
  • js判断两个对象相等

    2021-06-11 14:24:23
    最近项目中有遇到在点击切换按钮的时候,要判断当前页面的数据有没有发生修改,如果发生了修改,则提示是否保存的功能。 刚开始觉得很麻烦,后来想了一办好,将页面初始化和点击切换时的数据写成li ...
  • js判断两个对象时,情况也许会很复杂 ,昨晚抽空写了个递归函数,希望能帮到各位... var obj1 = { content: "不像我,只会心疼哥哥....", ATK: "1000000", hottest: [{ key1: { str: '勇敢牛牛', }, ...
  • function isObjectValueEqual(a, b) { var aProps = Object.getOwnPropertyNames(a); var bProps = Object.getOwnPropertyNames(b); if (aProps.length != bProps.length) {...
  • JavaScript 中,如何判断两个对象是否相等?深拷贝, 浅拷贝
  • 深度遍历对象属性值进行判断对象是否相同
  • 例如: 答案:
  • var arr = [ { name: 张三, sum: 2 }, { name: 张三, sum: 7 }, { name: 李四, sum: 4 }, { name: 李四, sum: 5 }, { name: 李四, sum: 6 }, { name: 王五, sum: 4 }, ] 判断 name 是否相同 相同 sum 就...
  • js中是不能直接用“==”或者“===”来计算两个数组是否相等的,那么就需要对数组的进行比较; 二、次解决方案 对于比较两个数组次要的方法有如下几种,为什么说是次要解决方案呢?因为它不能真正称之为对两个...
  • 做批量删除的时候,要确定数组对象中每一项中有没有发布状态的,如果有也就是判断releaseStatus字段有没有为true的,只要有一为true就给出提示让撤回后再删除,如果没有发布中的直接删除,下面这句可以快速判断,...
  • js判断两个对象是否相等?整个小方法搞定

    千次阅读 多人点赞 2020-04-17 15:45:03
    作为一刚入行不久的前端小菜鸡,写博客的原因一方面是为了记录一下自己平时踩的坑,给新入坑的小伙伴提供一前车之鉴。另一方面则是分享一些自己工作、学习的心得,如果有跑偏的地方,希望能得到大佬们的批评指正...
  • 由于在做键盘导航组件的项目时,有这样一个需求,当用户传入按键字母和网址的映射时,如果和 localStorage 中的不一样那么就用 localStorage 中存储的,这个时候就需要比较两个对象的内容是否相等,但是在 JS对象...
  • JS判断两个对象内容是否相等的方法

    千次阅读 2021-12-29 16:12:26
    我们知道,如果两个对象即使内容,JavaScript也会判断它们不相等。但是有时候,我们仅仅需要判断两个对象的内容是否相等。那么我们应该如何做到且考虑周全呢?比如说0和-0,null和undefined,是不相等的,NaN和NaN...
  • 如何判断JS两个对象是否相等

    千次阅读 2021-08-12 16:50:13
    ① 方法一:通过JSON.stringify(obj)来判断两个对象转后的字符串是否相等 优点:用法简单,对于顺序相同两个对象可以快速进行比较得到结果 缺点:这种方法有限制就是当两个对比的对象中key的顺序不是完全相同时会...
  • 一、some():用于检测数组中的元素是否满足指定条件 some方法会依次执行数组的每元素; 如果有一元素满足条件,则表达式返回true, 剩余的元素不会再执行检测 如果没有满足条件的元素,则返回false 二、every...
  • js判断两个对象是否相等

    千次阅读 2022-05-15 19:14:37
    js判断两个对象是否相等js中的Object、Array、Function等复杂数据类型,是无法直接用==和===操作符进行比对的。 Object对比 const tar = { name:'张三', age:12, address:'上海市浦东新区' } const ...
  • JavaScript中 如何判断两个对象是否相等? object类型作为JavaScript中的基本数据类型,也是实际前端开发中经常使用的一种数据类型。 对于数字(Number)、字符串(String)、Boolean类型等数据,判断是否相等,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 246,719
精华内容 98,687
热门标签
关键字:

js判断两个对象的属性值是否相等