我无法使用JavaScript按照键值映射两个json数据数组。我在下面解释我的代码。
var userdata=[{'email':'a@gmail.com','name':'Rajj'},{'email':'b@gmail.com','name':'Rajesh'}];
var userdata1=[{'email':'a@gmail.com','address':'rasukgarh'}];
var finalArr=[];
userdata.map(item => {
userdata1.map(item1 => {
if(item.email==item1.email){
finalArr.push(Object.assign(item, item1));
}else{
finalArr.push(Object.assign(item, item1));
}
})
})
console.log('all Data',finalArr);
}
这里我的要求是,如果两个数组中都存在相同的电子邮件ID,则第二个数组的附加数据将与第一个数据合并。如果第一个数组有一些数据并且基于email value
第二个数组中没有数据,则在帽子情况下只有第一个数组数据将推送到结果数组。这是我的预期输出。
finalArr=[{'email':'a@gmail.com','name':'Rajj','address':'rasukgarh'},{'email':'b@gmail.com','name':'Rajesh'}]
但在我的情况下,我不能这样。
答案 0 :(得分:2)
您可以使用map()
创建新数组,find()
使用第二个数组和Object.assign()
查找具有相同电子邮件的对象,以创建对象副本并从第二个数组中分配对象。
var userdata=[{'email':'a@gmail.com','name':'Rajj'},{'email':'b@gmail.com','name':'Rajesh'}];
var userdata1=[{'email':'a@gmail.com','address':'rasukgarh'}]
var result = userdata.map(function(e) {
var find = userdata1.find(a => a.email == e.email);
return Object.assign({}, e, find)
})
console.log(result)

答案 1 :(得分:0)
<object width="400" height="400" data="SOMETHING.jar"></object>