[英]Comparing 2 json and merge to 1 json in javascript razor
我想问一下,我如何比较这两个 json 并将它们合并为 javascript 中的一个?
首先 json 来自 controller。
第二个 json 在我输入之后。
任何帮助表示赞赏。
先json
[{"name":"Stock",
"data":
[{"name":"Fish",
"amount":80,
"color":"#0000ff"
},
{"name":"Meat",
"amount":20,
"color":"#fd0000"
}]
}]
2号 json
[{"name":"Stock",
"data":
[{"name":"Fish",
"amount":5,
"color":"#008000"
},
{"name":"Meat",
"amount":10,
"color":"#00FF00"
}]
}]
预计 Output
[{"name":"Stock",
"data":
[{"name":"Fish",
"amount":80, // first json amount
"color":"#0000ff"
},
{"name":"Meat",
"amount":20, // first json amount
"color":"#fd0000"
},
{"name":"Fish",
"amount":75, // 80 - 5 = 75 (first json - 2nd json)
"color":"#008000"
},
{"name":"Meat",
"amount":10, // 20 - 10 = 10 (first json - 2nd json)
"color":"#00FF00"
}]
这可能会帮助你!
let json1 = [{"name":"Stock", "data": [{"name":"Fish", "amount":80, "color":"#0000ff" }, {"name":"Meat", "amount":20, "color":"#fd0000" }] }] let json2 = [{"name":"Stock", "data": [{"name":"Fish", "amount":5, "color":"#008000" }, {"name":"Meat", "amount":10, "color":"#00FF00" }] }] let amountMap = {}; let stockMap = {}; let result = []; function addToResult(jsonA){ jsonA.forEach((stock)=>{ if( stockMap[stock.name]==undefined ){ stockMap[stock.name] = stock; result.push(stockMap[stock.name]); } stock.data.forEach((data)=>{ if( amountMap[stock.name+";"+data.name]==undefined ){ amountMap[stock.name+";"+data.name] = data.amount; // no need to push as data already present there }else{ amountMap[stock.name+";"+data.name] = amountMap[stock.name+";"+data.name] - data.amount; data.amount = amountMap[stock.name+";"+data.name]; //replace amount stockMap[stock.name].data.push(data); } }); }); } addToResult(json1); addToResult(json2); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.