// objA (原型对象,包含所有键值,要求合并后的对象和此对象结构一致)objA = {
a:'',
b:[],
c:{
c1: '',
c2: [],
c3: {
c31:'',
c32:[],
c33:{}
}
}}// objB包含objA的某些键值,比如objB = {
c:{
c3:{
c32:['apple']
}
}}要求objB中的值赋值给objA,并保留完整的objA的结构// 例 合并后如下:objC = {
a:'',
b:[],
c:{
c1: '',
c2: [],
c3: {
c31:'',
c32:['apple'],
c33:{}
}
}}使用Object.assign()方法合并对象的话,会造成有些ObjB中没有的键值被合并掉,造成结构和ObjA结构缺失的情况,请问改如何处理?
1 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
function MergeRecursive(obj1, obj2) { for (var p in obj2) { try { // Property in destination object set; update its value. if ( obj2[p].constructor==Object ) { obj1[p] = MergeRecursive(obj1[p], obj2[p]); } else { obj1[p] = obj2[p]; } } catch(e) { // Property in destination object not set; create it and set its value. obj1[p] = obj2[p]; } }
不想自己写直接搜了个,你还可以自定义下数组的操作,该函数是直接后者覆盖前者。
引自 How can I merge properties of two JavaScript objects dynamically?
- 1 回答
- 0 关注
- 1341 浏览
添加回答
举报
0/150
提交
取消