比较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); //判断是否有未保存值
 
原文地址:https://www.cnblogs.com/xiaolucky/p/14148342.html