2017-10-10 43 views
1

另一個JSON我有2個不同的JSON對象推進價值在角

JSON1

[ 
    { 
    title: "Order Rule Violations", 
    type: "FieldView", 
    panel: "expanded", 
    data: [  
     { 
     label: "Rule Description",  
     type: "text", 
     }, 
     { 
     label: "comments",  
     type: "inputarea", 
     }, 
    ], 
    }, 
] 

JSON2

[ 
    { 
    data: [ 
     { 
     value: "00695", 
     }, 
     {   
     value: " ",   
     }, 
    ], 
    }, 
] 

我需要結合起來,並得到一個結果如

[ 
    { 
    title: "Order Rule Violations", 
    type: "FieldView", 
    panel: "expanded", 
    data: [ 
     { 
     label: "Rule Description",  
     type: "text", 
     value: "00695", 
     }, 
     { 
     label: "comments",  
     type: "inputarea", 
     value: " ", 
     }, 
    ], 
    }, 
] 

請告知我如何能夠做到這一點使用角/打字稿

+0

這不是一個具體的問題。它可以在Javascript或Typescript中完成,具體取決於您使用的是什麼? –

+0

我需要打字稿 – aabbcc

回答

0

這應這種情況:

for(var i=0;i<JSON1[0].data.length;i++) 
JSON1[0].data[i].value= JSON2[0].data[i].value; 
0

您可以使用使用嵌套Object.assign遍歷每個數組,然後合併這兩個對象。

const json1 = [{ 
 
    title: 'Order Rule Violations', 
 
    type: 'FieldView', 
 
    panel: 'expanded', 
 
    data: [{ 
 
     label: 'Rule Description', 
 
     type: 'text', 
 
    }, 
 
    { 
 
     label: 'comments', 
 
     type: 'inputarea', 
 
    }, 
 
    ], 
 
}]; 
 

 
const json2 = { 
 
    data: [{ 
 
     value: '00695', 
 
    }, 
 
    { 
 
     value: ' ', 
 
    }, 
 
    ] 
 
}; 
 

 
const json3 = json1.map(y => { 
 
    y.data = y.data.map(
 
     (x, index) => Object.assign(x, json2.data[index]) 
 
    ); 
 
    return y; 
 
}); 
 
    
 
console.log(json3);

另一種解決方案是使用Lodash's _.merge function

+0

感謝您的回覆克里斯。我也會嘗試,並適當地使用它 – aabbcc

0

我改變JSON2有點像JSON2 = [ 「」, 「」, 「」,....]和代碼低於 爲我工作,

var k=0; 
    for(var i=0; i<this.JSON1.length; i++){     
         for(var j=0; j<this.JSON1[i].data.length; j++){ 
         console.log("j",j); 
         this.JSON1[i].data[j].value = this.JSON2[k]; 
         k++;   
         } 
        }