gpt4 book ai didi

javascript - 如何合并和匹配 2 个单独的对象?

转载 作者:行者123 更新时间:2023-12-02 23:23:05 26 4
gpt4 key购买 nike

我想要什么

我有2 个不同的 JavaScript 数组/对象,但具有匹配的 ID。我想将它们合并到一个新对象中。因此,主对象数据和辅助对象中的任何匹配元素都会合并为一个组合结果。

我尝试过的

我尝试使用Object.assign()函数,但没有成功。

给定输入

示例代码,因此我有 2 个单独的对象(mainlines):

let main = [
{
"Id": "1",
"Name": "Testing data"
}
]

let lines = [
{
"OtherId": "1",
"code": "AU-29830"
},
{
"OtherId": "1",
"code": "AU-29854-Single"
},
{
"OtherId": "1",
"code": "TV-BB21084623"
},
{
"OtherId": "2",
"code": "Don't Merge"
},
{
"OtherId": "3",
"code": "Don't Merge"
}
]

预期输出

我想合并这两个数组,以便输出应该是一个包含合并主对象单个数组。这个合并的主对象应该包含其自身的原始内容以及嵌套的过滤辅助数组(仅包含匹配对象)。过滤是使用主数组对象中的id完成的,该id必须与每个对象的ID相匹配(略有偏差) >辅助数组

生成的数组应如下所示:

let result = [
{
"Id": "1",
"Name": "Testing data",
"lines": [
{
"OtherId": "1",
"ProductCode": "AU-29830"
},
{
"OtherId": "1",
"ProductCode": "AU-29854-Single"
},
{
"OtherId": "1",
"ProductCode": "TV-BB21084623"
}
]
}
]

最佳答案

由于您的 main 是一个数组,我假设您最终可能会在其中包含多个主要项目。如果是这样,这里有一种将 line 项目合并到每个项目上的方法:

const mergedMainItems = 
main.map(mainItem=>({
...mainItem,
lines: lines.filter(line=>mainItem["Id"] === line["OtherId"])
}))

关于javascript - 如何合并和匹配 2 个单独的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56859064/

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