如何比较2个json数组和基于match构造的3个json数组

我有一个情况,我必须比较2个json arrays如果他们的name相互比

我必须construct第三个json array

例如:考虑1st json array [{"name":"hx inda pvt ltd","mobile":"95467646"}]

2nd json array

[{"name":"hx inda pvt ltd","email":"abc@gmail.com","address":"#141 vr pura"}]

这里的两个name字段匹配i,e "name":"hx inda pvt ltd" == "name":"hx inda pvt ltd" ,因此我想要construct像这样的3rd json arrayresultant array

 [{"name":"hx inda pvt ltd","mobile":"95467646","email":"abc@gmail.com","address":"#141 vr pura"}] 

这里是我的样本数据

 var json1 = '[{"name":"hx inda pvt ltd","mobile":"95467646"},{"name":"lg inda pvt ltd","mobile":"08063553"},{"name":"sahasra agency","mobile":""}]'; var json2 = '[{"name":"hx inda pvt ltd","email":"abc@gmail.com","address":"#141 vr pura"},{"name":"sahasra agency","email":"sah@gmail.com","address":"#444 nagar"}]'; resultant array: var result = '[{"name":"hx inda pvt ltd","mobile":"95467646","email":"abc@gmail.com","address":"#141 vr pura"},{"name":"sahasra agency","mobile":"","email":"sah@gmail.com","address":"#444 nagar"}]'; 

我的整个说法是,如果name字段匹配,然后combine它们combine为一个resultant数组。

请看看jQuery.extend ,可能还有JSONparsing

首先,你需要将stringparsing成数组。 然后遍历数组并比较名称。 如果匹配,扩展将克隆对象。

 var arr1 = JSON.parse(json1); var arr2 = JSON.parse(json2); for(var i = 0; i < arr1.length; i++){ for(var j = 0; j< arr2.length; j++){ if(arr1[i].name === arr2[j].name) $.extend(true, arr1[i], arr2[j]); } } 

如果你喜欢string中的信息,就像最初介绍的那样,随意使用JSON.stringify var stringified = JSON.stringify(arr1);

这是一个工作jsfiddle

这可能会帮助你。 我已经采取直接对象请使用JSON.parse将您的string转换为对象。

 var json1 = [{"name":"hx inda pvt ltd","mobile":"95467646"},{"name":"lg inda pvt ltd","mobile":"08063553"},{"name":"sahasra agency","mobile":""}]; var json2 = [{"name":"hx inda pvt ltd","email":"abc@gmail.com","address":"#141 vr pura"},{"name":"sahasra agency","email":"sah@gmail.com","address":"#444 nagar"}]; var resultObj = []; for(let i in json1) { let name = json1[i].name; for(let j in json2) { if(json2[j].name === name) { var tempData = json2[j]; let newObj = {}; newObj["name"] = json1[i].name; newObj["mobile"] = json1[i].mobile; newObj["email"] = tempData.email; newObj["address"] = tempData.address; resultObj.push(newObj); break; } } } console.log(JSON.stringify(resultObj));