Javascript 组合两个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

我有两个不同的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&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如果答案有用,请您将此答案标记为正确!!