gpt4 book ai didi

javascript - 如何检查一个 json 对象数组中的 id 是否存在于另一个嵌套的 json 对象数组中?

转载 作者:行者123 更新时间:2023-12-01 01:20:33 26 4
gpt4 key购买 nike

我正在向两个端点调用电话,需要显示所有公司及其资金、名称和为该公司生产的工厂。

这是来自一个端点的响应

let factories = [
{
id: 1,
name: "Xintang",
short: "xin",
companies: [0, 4, 101,198]
},
{
id: 2,
name: "Ohio Plant",
short: "OHP",
companies: [22, 27]
},
{
id: 3,
name: "Cincy",
short: "Cin",
companies: []
}
];

这是第二个的回复

let companies = [
{
id: 0,
fund: "79588.96",
name: "Microsoft"
},
{
id: 1,
fund: "166727.06",
name: "Comcast"
},
{
id: 2,
fund: "131206.88",
name: "Apple"
},
{
id: 3,
fund: "74095.75",
name: "HP"
},
{
id: 4,
fund: "142556.86",
name: "Dell"
}
];

数据集要大得多,但这只是一个示例。所以我希望能够创建一个将工厂与特定公司联系起来的新对象。有没有办法可以映射公司并检查哪个工厂在该嵌套数组中具有公司id,以便我可以添加新属性factory 到公司,并有一个新的对象数组,如下所示。

let returnedArr = [
{
id: 0,
fund: "79588.96",
name: "Microsoft",
factory: "Xintang"
},
{
id: 4,
fund: "142556.86",
name: "Dell",
factory: "Xintang"
}
];

最佳答案

您可以使用 reduce 执行以下操作和 Map .

获取company-idfactory-name映射 -> 然后循环companies并创建输出

let factories = [{id:1,name:"Xintang",short:"xin",companies:[0,4,101,198]},{id:2,name:"Ohio Plant",short:"OHP",companies:[22,27]},{id:3,name:"Cincy",short:"Cin",companies:[]}],
companies = [{id:0,fund:"79588.96",name:"Microsoft"},{id:1,fund:"166727.06",name:"Comcast"},{id:2,fund:"131206.88",name:"Apple"},{id:3,fund:"74095.75",name:"HP"},{id:4,fund:"142556.86",name:"Dell"}]

/*Get the company id: factory name mapping*/
const map = factories.reduce((m, f) =>
(f.companies.forEach(c => m.set(c, f.name)), m)
, new Map);

const output = companies.map(c => ({...c, factory: map.get(c.id) || ''}));

console.log(output)

关于javascript - 如何检查一个 json 对象数组中的 id 是否存在于另一个嵌套的 json 对象数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54272801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com