美文网首页
JS如何判断俩个对象是否相等

JS如何判断俩个对象是否相等

作者: zhao_ran | 来源:发表于2021-03-25 21:26 被阅读0次

判断对象相等的步骤:
1.先判断俩者是不是对象
2.是对象后俩者长度是否一致
3.判断俩个对象的所有key值是否相等相同
4.判断俩个对象的相应的key对应的值是否相同
5.来一个递归判断里面的对象循环1-4步骤

 function diff(obj1, obj2) {
      var o1 = obj1 instanceof Object;
      var o2 = obj2 instanceof Object;
      // 判断是不是对象
      if (!o1 || !o2) {
        return obj1 === obj2;
      }
      //Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,
      //例如:数组返回下表:let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;
      if (Object.keys(obj1).length !== Object.keys(obj2).length) {
        return false;
      }
      for (var o in obj1) {
        var t1 = obj1[o] instanceof Object;
        var t2 = obj2[o] instanceof Object;
        if (t1 && t2) {
          if (!diff(obj1[o], obj2[o])) {
            return false
          }
        } else if (obj1[o] !== obj2[o]) {
          return false;
        }
      }
      return true;
    }
方法2
   function isObjectValueEqual(obj1, obj2) {
      var o1 = obj1 instanceof Object;
      var o2 = obj2 instanceof Object;
      // 判断是不是对象
      if (!o1 || !o2) {
        return obj1 === obj2;
      }
      var aProps = Object.keys(obj1);
      var bProps = Object.keys(obj2);
      if (aProps.length != bProps.length) {
        return false;
      }
      for (var i = 0; i < aProps.length; i++) {
        var propName = aProps[i]

        var propA = obj1[propName]
        var propB = obj2[propName]
        // 2020-11-18更新,这里忽略了值为undefined的情况
        // 故先判断两边都有相同键名
        if (!obj2.hasOwnProperty(propName)) return false
        if ((propA instanceof Object)) {
          if (!isObjectValueEqual(propA, propB)) {
            return false
          }
        } else if (propA !== propB) {
          return false
        }
      }
      return true
    }

相关文章

  • JS如何判断俩个对象是否相等

    判断对象相等的步骤:1.先判断俩者是不是对象2.是对象后俩者长度是否一致3.判断俩个对象的所有key值是否相等相同...

  • iOS isKindOfClass 和 isMemberOfC

    1,这里先比较 俩个的对象方法,也就是减号方法 isMemberOfClass 是直接判断俩边所属的类对象是否相等...

  • python 高级编程①

    1 ‘==’ 与‘is ’的使用 ① ‘==’判断两个对象内容是否相等 ‘is’判断两个对象的地址是否相等 ②在p...

  • js判断是否为对象,空对象,是否为数组

    js判断是否为对象 js判断是否为数组 js判断是否空对象

  • iOS 快看漫画面试整理

    1, 如何判断两个对象相等 先判断是否为nil,然后比较对象的地址(用==),然后判断两个对象是否是同一个类(用i...

  • 关于isEqual

    isEqual,用来判断两个对象是否相等。但是,与“==”判断指针地址是否相等,不同的是,它判断的是对象的内容方...

  • C# 相等比较

    引用相等性 判断两个对象是否引用同一基础对象。使用 ReferenceEquals 方法判断: 值相等性 使用 =...

  • kotlin学习笔记

    $ ?表示对象可能为空 ?: !! ==,=== ==判断值是否相等,===判断值及引用是否完全相等。 ..Kot...

  • JS 判断两个对象是否相等

    判断两个对象是否相等,执行结果:

  • JQ判断一个对象是否为空

    参考文章:js如何判断一个对象{}是否为空对象,没有任何属性

网友评论

      本文标题:JS如何判断俩个对象是否相等

      本文链接:https://www.haomeiwen.com/subject/rqarhltx.html