2016-11-17 70 views
-2

對象:1要推一些鍵值對嵌套對象

{ 
    "sourcePath": "vv", 
    "targetPath": "bb" 
} 

我得到一個鍵值對狀物體1和已經我有一個嵌套的對象狀物體2

對象:2

{ 
"user": "hdpsrvc", 
"update": "13/06/2016 17:43:22", 
"template": "template_1", 
"formBody": [ 
    { 
     "tabIndex": 0, 
     "type": "text", 
     "name": "sourcePath", 
     "label": "Source path" 
    }, 
    { 
     "tabIndex": 1, 
     "type": "text", 
     "name": "targetPath", 
     "label": "Target path" 
    } 
], 

}

,我想的鍵值對對象1的推入像BEL嵌套對象低(請參閱formBody下的紅色標記大膽的鍵值對)

{ 
"user": "hdpsrvc", 
"update": "13/06/2016 17:43:22", 
"template": "template_1", 
"formBody": [ 
    { 
     "tabIndex": 0, 
     "type": "text", 
     "name": "sourcePath", 
     "label": "Source path", 
     "sourcePath": "vv" 
    }, 
    { 
     "tabIndex": 1, 
     "type": "text", 
     "name": "targetPath", 
     "label": "Target path", 
     "targetPath": "bb" 
    } 
], 
} 
+0

這似乎與JSON無關,但與JavaScript對象有關。請閱讀'json'標籤的使用說明。 – trincot

回答

0

如果只有這兩個衣被合計推那麼它可以簡單地通過如下分配來輕鬆完成。

假設JSON 1存儲在變量var jsonOne中,並且JSON 2存儲在變量var jsonTwo中。然後

jsonTwo.formBody[0].sourcePath = jsonOne.sourcePath; 
jsonTwo.formBody[1].targetPath = jsonOne.targetPath; 

或者,如果你有更多值推動,那麼你可以寫一個for循環,並形成一個算法來匹配。在下面的代碼中,我與標籤匹配;

for (i = 0; i < jsonTwo.formBody.length; i++) { 
    var temp = jsonTwo.formBody[i].label; 
    if (temp === 'Source path') { 
     jsonTwo.formBody[i].sourcePath = jsonOne.sourcePath; 
    } else { 
     jsonTwo.formBody[i].targetPath = jsonOne.targetPath; 
    } 
} 
0

你可以試試這個:

var obj1 = { 
 
    "sourcePath": "vv", 
 
    "targetPath": "bb" 
 
}; 
 

 
var obj2 = { 
 
"user": "hdpsrvc", 
 
"update": "13/06/2016 17:43:22", 
 
"template": "template_1", 
 
"formBody": [ 
 
    { 
 
     "tabIndex": 0, 
 
     "type": "text", 
 
     "name": "sourcePath", 
 
     "label": "Source path" 
 
    }, 
 
    { 
 
     "tabIndex": 1, 
 
     "type": "text", 
 
     "name": "targetPath", 
 
     "label": "Target path" 
 
    } 
 
]}; 
 

 
obj2.formBody = obj2.formBody.map((item , ind) => Object.assign(
 
    item, 
 
    {[Object.keys(obj1)[ind]]: obj1[Object.keys(obj1)[ind]]} 
 
)); 
 
console.log(obj2);

甚至:

var obj1 = { 
 
    "sourcePath": "vv", 
 
    "targetPath": "bb" 
 
}; 
 

 
var obj2 = { 
 
"user": "hdpsrvc", 
 
"update": "13/06/2016 17:43:22", 
 
"template": "template_1", 
 
"formBody": [ 
 
    { 
 
     "tabIndex": 0, 
 
     "type": "text", 
 
     "name": "sourcePath", 
 
     "label": "Source path" 
 
    }, 
 
    { 
 
     "tabIndex": 1, 
 
     "type": "text", 
 
     "name": "targetPath", 
 
     "label": "Target path" 
 
    } 
 
]}; 
 

 
obj2.formBody = obj2.formBody.map(item => Object.assign(
 
    item, 
 
    {[item.name]: obj1[item.name]} 
 
)); 
 
console.log(obj2);