zoukankan      html  css  js  c++  java
  • js判断两个对象的属性和值是否一致

    毫无疑问,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.  
  • 相关阅读:
    2020软件工程最后一次作业
    常用的10种算法

    赫夫曼编码
    哈希表(散列)
    查找算法
    排序算法
    递归

    软件工程最后一次作业
  • 原文地址:https://www.cnblogs.com/wangweizhang/p/11113890.html
Copyright © 2011-2022 走看看