2016-11-17 69 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);