Javascript 组合两个JSON对象
我有两个不同的JSON对象,一个Javascript 组合两个JSON对象,javascript,jquery,json,Javascript,Jquery,Json,我有两个不同的JSON对象,一个 [{"pmid":"29092960","MemberID":"33"},{"pmid":"28652336","MemberID":"33"}] 另一个呢 { "meta": { "refs": 0, "pmids": "29092960,28652336" }, "links": { "self": "https://icite.od.nih.gov/api/pubs?refs=0
[{"pmid":"29092960","MemberID":"33"},{"pmid":"28652336","MemberID":"33"}]
另一个呢
{
"meta": {
"refs": 0,
"pmids": "29092960,28652336"
},
"links": {
"self": "https://icite.od.nih.gov/api/pubs?refs=0&pmids=23456789%2C27599104"
},
"data": [
{
"pmid": 29092960,
"doi": "10.1002/cncr.27976",
"authors": "ABC, XYZ",
"journal": "Cancer",
"year": 2013
},
{
"pmid": 28652336,
"doi": "10.1371/journal.pbio.1002541",
"authors": "Bbbb",
"journal": "PLoS Biol.",
"year": 2016
}
]
}
有可能把这些结合起来吗?我通过循环网格和添加项创建的第一个对象。第二个来自一个api,我需要添加额外的数据。这与我发现的任何其他示例的结构都不一样。我想将基于pmid值的链接作为一个键
我希望输出是
{"pmid": 29092960,
"doi": "10.1002/cncr.27976",
"authors": "ABC, XYZ",
"journal": "Cancer",
"year": 2013,
"MemberID":"33"},{
"pmid": 29092960,
"doi": "10.1002/cncr.27976",
"authors": "ABC, XYZ",
"journal": "Cancer",
"year": 2013,
"MemberID": "33"}
组合两个JSON对象
让arr1=[{“pmid”:“29092960”,“MemberID”:“33”},{“pmid”:“28652336”,“MemberID”:“33”}];
设arr2={
“元”:{
“参考文献”:0,
“PMID”:“2909296028652336”
},
“链接”:{
“自我”:https://icite.od.nih.gov/api/pubs?refs=0&pmids=23456789%2C27599104"
},
“数据”:[
{
“pmid”:29092960,
“内政部”:“10.1002/cncr.27976”,
“作者”:“ABC,XYZ”,
“杂志”:“癌症”,
“年份”:2013年
},
{
“pmid”:28652336,
“内政部”:“10.1371/journal.pbio.1002541”,
“作者”:“Bbbb”,
《期刊》:《公共图书馆生物学》,
“年份”:2016年
}
]
};
设arr3=[];
arr1.forEach((itm,i)=>{
push(Object.assign({},itm,arr2.data.find(k=>k.pmid==itm.pmid));
});
控制台日志(arr3)代码>您确实可以组合对象
因为in-loops将帮助您完成工作,在处理对象时,它是一件放在后口袋中的好东西
我在下面提供了一个解决方案
var obj1=[{“pmid”:“29092960”,“MemberID”:“33”},{“pmid”:“28652336”,“MemberID”:“33”}];
变量obj2={
“元”:{
“参考文献”:0,
“PMID”:“2909296028652336”
},
“链接”:{
“自我”:https://icite.od.nih.gov/api/pubs?refs=0&pmids=23456789%2C27599104"
},
“数据”:[
{
“pmid”:29092960,
“内政部”:“10.1002/cncr.27976”,
“作者”:“ABC,XYZ”,
“杂志”:“癌症”,
“年份”:2013年
},
{
“pmid”:28652336,
“内政部”:“10.1371/journal.pbio.1002541”,
“作者”:“Bbbb”,
《期刊》:《公共图书馆生物学》,
“年份”:2016年
}
]
};
用于(obj1中的var char){
for(obj2.data中的var innerArr){
//obj2 pmid是一个数字,因此将其转换为字符串进行比较
if(obj1[char].pmid==obj2.data[char].pmid.toString()){
obj2.data[char].MemberID=obj1[char].MemberID;
}
}
}
log(JSON.stringify(obj2.data))代码>使用和可以实现另一种可能的解决方案:
让arr=[
{“pmid”:“29092960”,“MemberID”:“33”},
{“pmid”:“28652336”,“MemberID”:“33”}
];
让json={
“元”:{
“参考文献”:0,
“PMID”:“2909296028652336”
},
“链接”:{
“自我”:https://icite.od.nih.gov/api/pubs?refs=0&pmids=23456789%2C27599104"
},
“数据”:[
{
“pmid”:29092960,
“内政部”:“10.1002/cncr.27976”,
“作者”:“ABC,XYZ”,
“杂志”:“癌症”,
“年份”:2013年
},
{
“pmid”:28652336,
“内政部”:“10.1371/journal.pbio.1002541”,
“作者”:“Bbbb”,
《期刊》:《公共图书馆生物学》,
“年份”:2016年
}
]
};
让res=arr.map({pmid,MemberID})=>
{
返回Object.assign({pmid,MemberID},json.data.find(o=>o.pmid==+pmid));
});
控制台日志(res)代码>你能更精确地说明你期望的输出是什么吗?你希望得到什么样的对象结构?第一个还是第二个?还是第三个?,是否要将第一个的MemberID添加到第二个?。你的问题相当含糊。组合可能意味着很多事情。内部循环Object.assign(obj1,obj2)
非常感谢。今晚我会用你和穆罕默德的解决方案来解决这个问题。我可以看出他们都解决了我的问题。如果您还有任何问题,请告诉我。非常感谢。今晚我将用你和斯潘格尔的解决方案来解决这个问题。我可以看出他们都解决了我的问题problem@user1314159如果答案有用,请您将此答案标记为正确!!