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

我想问一下,我如何比较这两个 json 并将它们合并到一个 javascript 中?


第一个 json 是从控制器获取的。


第二个json是在我输入之后。


任何帮助表示赞赏。


第一个json


[{"name":"Stock",

    "data":

    [{"name":"Fish", 

      "amount":80,

      "color":"#0000ff"

     },

     {"name":"Meat", 

     "amount":20,

     "color":"#fd0000"

     }]

    }]

第二个json


[{"name":"Stock",

    "data":

    [{"name":"Fish", 

      "amount":5,

      "color":"#008000"

     },

     {"name":"Meat", 

     "amount":10,

     "color":"#00FF00"

     }]

    }]

预期产出


[{"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"

    }]


阿晨1998
浏览 112回答 1
1回答

慕哥9229398

这可能对你有帮助!!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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript