比较2个对象是否相同

比较2个对象是否相同

isObjEqual(a, b) {
      // 判断两个对象是否指向同一内存,指向同一内存返回true
      if (a === b) return true;
      // 获取两个对象键值数组
      let aProps = Object.getOwnPropertyNames(a);
      let bProps = Object.getOwnPropertyNames(b);
      // 判断两个对象键值数组长度是否一致,不一致返回false
      if (aProps.length !== bProps.length) return false;
      // 遍历对象的键值
      for (let prop in a) {
        // 判断a的键值,在b中是否存在,不存在,返回false
        if (b.hasOwnProperty(prop)) {
          // 判断a的键值是否为对象,是则递归,不是对象直接判断键值是否相等,不相等返回false
          if (typeof a[prop] === "object") {
            if (!this.isObjEqual(a[prop], b[prop])) return false;
          } else if (a[prop] !== b[prop]) {
            return false;
          }
        } else {
          return false;
        }
      }
      return true;
    },

//使用
let isSave = this.isObjEqual(this.oldForm, this.otherFrom); //判断是否有未保存值
 

 

posted @ 2020-12-17 10:46  潇潇-lucky  阅读(433)  评论(0编辑  收藏  举报