美文网首页
新对象和旧对象对比,如果旧对象包含老对象变量,则改变老对象的值

新对象和旧对象对比,如果旧对象包含老对象变量,则改变老对象的值

作者: 一人创客 | 来源:发表于2020-09-13 22:40 被阅读0次

新对象和旧对象对比,如果旧对象包含老对象变量,则改变老对象的值

    var table1 = {
      name: "张三",
      age: 18,
      config: {
        a: 1
      },
      config1: [1, 222222, 2, 3]

    };
    var table2 = {
      page:1,
      name: null,
      age: 0,
      code: 18,
      config: {
        a: 2
      },
      config1: [1, 2, 3]
    }



 function merge(newData, oldData) {
      if (newData instanceof Object) {
        for (const key in newData) {
          if (oldData.hasOwnProperty(key)) {
            oldData[key] = newData[key]
            merge(newData[key], oldData[key])
          }
        }
      }
      return oldData
    }


 console.log(merge(table1, table2));

还有一种情况,新对象相同的改变,没有的也要;前提是新数据中有老数据中没有的,但提交要按老数据;虽然有点绕但是有可能会有这种场景

var table1 = {
      name: "张三",
      age: 18,
      config: {
        a: 1
      },
      config1: [1, 222222, 2, 3],
      wang:1

    };
    var table2 = {
      page:1,
      name: null,
      age: 0,
      code: 18,
      config: {
        a: 2
      },
      config1: [1, 2, 3]
    }

function mergeAll(newData, oldData) {
      if (newData instanceof Object) {
        for (const key in newData) {
          if (oldData.hasOwnProperty(key)) {
            oldData[key] = newData[key]
            mergeAll(newData[key], oldData[key])
          }else{
            oldData[key] = newData[key]
          }
        }
      }
      return oldData
    }
    console.log(mergeAll(table1, table2));

相关文章

  • 新对象和旧对象对比,如果旧对象包含老对象变量,则改变老对象的值

    新对象和旧对象对比,如果旧对象包含老对象变量,则改变老对象的值 还有一种情况,新对象相同的改变,没有的也要;前提是...

  • copy和retain区别

    copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提...

  • Objective C - 属性对比

    MRC: retain:适用继承于NSObject类的对象类型。释放旧的对象,将旧对象的值赋予输入对象,再提高输入...

  • iOS中@property常用属性关键字详解

    1. strong: strong关键字释放旧对象时会将旧对象的值赋予输入对象,使输入对象的retainCoun...

  • weak retain strong assign

    retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 指定retain会在赋值时唤醒...

  • python 16:copy模块

    在python中,对象赋值操作不复制对象,这样新的变量会指向原来的对象。如果对象是可变的,例如列表和字典,则就会出...

  • JS中对象赋值只传值不传对象(地址)的方法,改变新值不影响旧值

    使用JS有一个很恼人的问题,当我把对象赋值给新的对象后,新的对象改变了,旧的对象也会跟着改变,如以下例子: 按照我...

  • copy和mutablecopy小tip

    原则就是:修改新(旧)对象,不影响旧(新)对象!而且不一定产生新的对象!(划重点) Mutablecopy返回的是...

  • copy和mutableCopy

    原则就是:修改新(旧)对象,不影响旧(新)对象!而且不一定产生新的对象!(划重点) Mutablecopy返回的是...

  • [译]Scala类

    Scala中的类用于创建对象。类中可以包含方法,值,变量,类型,对象,特征以及类,统称为成员。类型,对象和特征稍后...

网友评论

      本文标题:新对象和旧对象对比,如果旧对象包含老对象变量,则改变老对象的值

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