vue - 比较两个Json对象是否相等

// 内容是否有修改
      // true:未改变;false:改变了
      isChange() {
        if(this.Compare(this.dialog.detail.form, this.dialog.detail.oldForm)){
          console.log('未改变');
        }else{
          console.log('改变');
        }
        return this.Compare(this.dialog.detail.form, this.dialog.detail.oldForm);
      },
      /**************************************比较json-start***************************************/
      isObj(object) {
        return object && typeof(object) == 'object' && Object.prototype.toString.call(object).toLowerCase() == "[object object]";
      },
      isArray(object) {
        return object && typeof(object) == 'object' && object.constructor == Array;
      },
      getLength(object) {
        var count = 0;
        for(var i in object) count++;
        return count;
      },
      CompareObj(objA, objB, flag) {
        for(var key in objA) {
          if(!flag) //跳出整个循环
            break;
          if(!objB.hasOwnProperty(key)) {
            flag = false;
            break;
          }
          if(!this.isArray(objA[key])) { //子级不是数组时,比较属性值
            if(objB[key] != objA[key]) {
              flag = false;
              break;
            }
          } else {
            if(!this.isArray(objB[key])) {
              flag = false;
              break;
            }
            var oA = objA[key],
              oB = objB[key];
            if(oA.length != oB.length) {
              flag = false;
              break;
            }
            for(var k in oA) {
              if(!flag) //这里跳出循环是为了不让递归继续
                break;
              flag = this.CompareObj(oA[k], oB[k], flag);
            }
          }
        }
        return flag;
      },
      Compare(objA, objB) {
        if(!this.isObj(objA) || !this.isObj(objB)) return false; //判断类型是否正确
        if(this.getLength(objA) != this.getLength(objB)) return false; //判断长度是否一致
        return this.CompareObj(objA, objB, true); //默认为true
      },
      /**************************************比较json-end***************************************/
返回文章列表 打赏
本页链接的二维码
打赏二维码
期待你的评论

15 条评论
  1. 菜鸡 青铜   菜鸡  

    666 省了不少事

  2. 咖啡之家 青铜   咖啡之家  

    博主牛逼!

  3. 奥斯本 青铜   奥斯本  

    路过,顺便点赞

  4. 经典句子大全 青铜   经典句子大全  

    加鸡腿,加鸡腿,加鸡腿

  5. 咖啡之家 青铜   咖啡之家  

    给博主点赞!

  6. 奥斯本 青铜   奥斯本  

    为何如此优秀

  7. 咖啡之家 青铜   咖啡之家  

    给博主点赞!

  8. 经典句子大全 青铜   经典句子大全  

    为何如此优秀

  9. 网站建设 青铜   网站建设  

    博主牛逼!

  10. 手表资讯 青铜   手表资讯  

    干饭啦,干饭啦