// objA (原型對(duì)象,包含所有鍵值,要求合并后的對(duì)象和此對(duì)象結(jié)構(gòu)一致)objA = {
a:'',
b:[],
c:{
c1: '',
c2: [],
c3: {
c31:'',
c32:[],
c33:{}
}
}}// objB包含objA的某些鍵值,比如objB = {
c:{
c3:{
c32:['apple']
}
}}要求objB中的值賦值給objA,并保留完整的objA的結(jié)構(gòu)// 例 合并后如下:objC = {
a:'',
b:[],
c:{
c1: '',
c2: [],
c3: {
c31:'',
c32:['apple'],
c33:{}
}
}}使用Object.assign()方法合并對(duì)象的話,會(huì)造成有些ObjB中沒(méi)有的鍵值被合并掉,造成結(jié)構(gòu)和ObjA結(jié)構(gòu)缺失的情況,請(qǐng)問(wèn)改如何處理?
1 回答

瀟湘沐
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
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]; } }
不想自己寫直接搜了個(gè),你還可以自定義下數(shù)組的操作,該函數(shù)是直接后者覆蓋前者。
引自 How can I merge properties of two JavaScript objects dynamically?
- 1 回答
- 0 關(guān)注
- 1362 瀏覽
添加回答
舉報(bào)
0/150
提交
取消