Javascript 按键合并json文件中的2个对象数组

Javascript 按键合并json文件中的2个对象数组,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我试图在javascript/jquery中组合两个对象数组,并用相同的键(代码)匹配它们。这些对象数组存储在两个单独的json文件中 由于文件很长,我把它们删掉了 如果有人能帮忙,请提前感谢 目标1: [{ "city": "london", "selfemployed": { "job" :"Builder", "code": "abc" }, "company" : { "job": "Shopkeeper",

我试图在javascript/jquery中组合两个对象数组,并用相同的键(代码)匹配它们。这些对象数组存储在两个单独的json文件中

由于文件很长,我把它们删掉了

如果有人能帮忙,请提前感谢

目标1:

[{
    "city": "london",
    "selfemployed": {
        "job" :"Builder",
        "code": "abc"
    },
    "company" : {
        "job": "Shopkeeper",
        "code": "def"
    }
}]
目标2:

[{
    "code": "abc",
    "participant": {
        "firstname" : "Joe",
        "lastname" : "Blogs"
    }
},
{
    "code": "def",
    "participant": {
        "firstname" : "Anna",
        "lastname" : "Smith"
    }
}]
所需成果:

[{
    "city": "london",
    "selfemployed": {
        "job" :"Builder",
        "code": "abc",
        "participant": {
            "firstname" : "Joe",
            "lastname" : "Blogs"
        }
    },
    "company" : {
        "job": "Shopkeeper",
        "code": "def",
        "participant": {
            "firstname" : "Anna",
            "lastname" : "Smith"
        }
    }
}]
我的问题之一是无法从.json文件返回对象

var file1 = 'url/file1.json';
var file1 = 'url/file2.json';

const joinJson = (file1, file2) => {
    $.getJSON(file, function(data1) {
        return data1;

    });

    $.getJSON(file2, function(data2) {
        return data2;

    });

    // do stuff with data1 and data2
}
console.log(joinJson());

问题是,您正在异步获取文件,并在异步操作的回调中返回数据,而该操作将不起作用。这样做会更好:

var file1 = 'url/file1.json';
var file1 = 'url/file2.json';

const joinJson = (file1, file2) => {
    $.getJSON(file, function(data1) {
        // async operation 1 complete. Start operation 2.
        $.getJSON(file2, function(data2) {
            // async operation 2 complete
            // data1 and data2 are now available here
            console.log("Data 1:", data1);
            console.log("Data 2:", data2);

            // This will merge the keys of both objects
            // but you can replace it with custom merging logic
            var merged = Object.assign(data1, data2);
            console.log(merged);
        });
    });   
}
这里的问题是,您不能执行类似于
console.log(joinJson())的操作。您可能非常需要类似于a的东西。

您可以使用a并通过为新对象选择所需的代码信息来为结果构建新对象

此建议使用对象的rest属性和babel作为旧用户代理

var cities=[{city:“london”,自营职业:{job:“Builder”,code:“abc”},公司:{job:“shopper”,code:“def”}],
codes=[{code:“abc”,参与者:{firstname:“乔”,lastname:“博客”},{code:“def”,参与者:{firstname:“安娜”,lastname:“史密斯”}],
codesMap=newmap(codes.Map({code,participant})=>[code,participant]),
结果=cities.map(
({城市,…项目})=>
Object.assign({city},…Object.entries(items).map(
([k,v])=>({[k]:Object.assign({},v,codesMap.get(v.code)))
))
);
控制台日志(结果)

.as控制台包装{max height:100%!important;top:0;}
您好,感谢您的回复。如果这两个对象都在.json文件中,我该如何处理呢?您需要两个异步方法来读取文件,然后将它们连接起来。也许另一个答案可以帮你解决这个问题。