繁体   English   中英

在 javascript Z60C05C632A2822A0A8477C7E991620 中比较 2 个 json 并合并到 1 个 json

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM