// 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 關注
- 1365 瀏覽
添加回答
舉報
0/150
提交
取消