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

Javascript 如何比较2个json数组和基于match构造第3个json数组,javascript,jquery,node.js,Javascript,Jquery,Node.js,在这种情况下,如果2个json数组的名称彼此匹配,则必须对它们进行比较 我必须构造第三个json数组 实例:< 第一JSON数组< /C> >代码> [ {姓名]:“HX-INA PVT有限公司”,“Mobile”:“95467646”}/和 2nd json数组 [{“名称”:“hx英达私人有限公司”,“电子邮件”:abc@gmail.com“,“地址”:“#141 vr pura”}] 在这里,名称字段与i,e“名称”:“hx inda pvt ltd”==“名称”:“hx inda pv

在这种情况下,如果2个
json数组的
名称
彼此匹配,则必须对它们进行比较

我必须
构造
第三个
json数组

<强>实例:< <代码>第一JSON数组< /C> >代码> [ {姓名]:“HX-INA PVT有限公司”,“Mobile”:“95467646”}/<代码>和

2nd json数组

[{“名称”:“hx英达私人有限公司”,“电子邮件”:abc@gmail.com“,“地址”:“#141 vr pura”}]

在这里,
名称
字段与i,e
“名称”:“hx inda pvt ltd”==“名称”:“hx inda pvt ltd”
,因此我想
像这样构造第三个json数组(
结果数组

这是我的样本数据

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"}]';
我的总体观点是,如果
名称
字段匹配,那么
将它们组合成一个
结果
数组。

请看一看,并且可能

首先,需要将字符串解析为数组。然后遍历数组并比较名称。 如果它们匹配,“扩展”将克隆对象

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]);
    }
}
var arr1=JSON.parse(json1);
var arr2=JSON.parse(json2);
对于(变量i=0;i
如果您希望最初显示的信息以字符串形式显示,请随意使用
var stringify=JSON.stringify(arr1)


这里有一个实用的

这可能会对您有所帮助。我已获取直接对象,请使用
JSON.parse
将字符串转换为对象。

var json1=[{“名称”:“hx英达私人有限公司”,“手机”:“95467646”},{“名称”:“lg英达私人有限公司”,“手机”:“08063553”},{“名称”:“萨哈斯拉机构”,“手机”:“}”;
var json2=[{“名称”:“hx inda私人有限公司”,“电子邮件”:abc@gmail.com“,”地址:“#141 vr pura”},{”姓名:““萨哈斯拉机构”,“电子邮件:”sah@gmail.com“,”地址:“#444纳加尔”}”;
var resultObj=[];
for(让我输入json1){
设name=json1[i].name;
for(让j在json2中){
if(json2[j].name==name){
var tempData=json2[j];
设newObj={};
newObj[“name”]=json1[i].name;
newObj[“mobile”]=json1[i]。mobile;
newObj[“email”]=tempData.email;
newObj[“地址”]=tempData.address;
结果推送(newObj);
打破
}
}
}

log(JSON.stringify(resultObj))我的预期结果是这个
[{“名称”:“hx inda私人有限公司”,“手机”:“95467646”,“电子邮件”:abc@gmail.com,地址:“#141 vr pura”},{“姓名:”“萨哈斯拉机构”,“手机:”“电子邮件:”sah@gmail.com“,“address”:“#444 nagar”}]
但是在您的例子中有
3个结果
数组包含3个对象(如果展开)这是您所期望的。我已经用另一个console.log编辑了JSFIDLE的字符串化对象数组,使用
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]);
    }
}