//对象深拷贝改进型,如果一个对象节点值不是对象,则直接覆盖合并后的对象值exportconstobjDeepMerge=(obj1,obj2)=>{letkey;for(keyinobj2){obj1[key]=obj1[key]&&obj1[key].toString()==="[objectObject]"&&(obj2[key]&&obj2[key].toString()===“[对象对象]”)?objDeepMerge(obj1[key],obj2[key]):(obj1[key]=obj2[key]);}returnobj1;}请看下面的例子letobj2={name:'obj2',b:{c:{d:{name1:'obj2_name1'}}}}letobj3=Object.assign(obj1,obj2);//下面是结果obj3={name:'obj2',//这里注意,因为b值也是对象,直接覆盖替换obj1中的b值,value中的对象结构不再深度合并b:{c:{d:{name2:'obj1_name2'}}}}letobj4=objDeepMerge(obj1,obj2);//下面是结果obj4={name:'obj2',//这里要注意,因为b值也是一个对象,value中的对象结构已经向下深度合并b:{c:{c_child1:'c_child1',d:{name1:'obj2_name1',name2:'obj1_name2'}}}}亲:如果对您有帮助,请点赞!!!
