首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何合并和匹配两个独立的对象?

问如何合并和匹配两个独立的对象?
EN

Stack Overflow用户
提问于 2019-07-02 19:41:54
回答 2查看 46关注 0票数 0

我想要的

我有2不同的Java脚本数组/对象,但与匹配的Ids。我想把它们合并成一个新的对象。因此,主对象数据和来自次要对象的任何匹配元素都被合并到一个组合结果中。

我试过的

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

给定输入

示例代码,因此我有两个单独的对象(主对象和行):

代码语言:javascript
复制
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)。

得到的数组应该如下所示:

代码语言:javascript
复制
let result = [
   {
        "Id": "1",
        "Name": "Testing data",
        "lines": [
            {
                "OtherId": "1",
                "ProductCode": "AU-29830"
            },
            {
                "OtherId": "1",
                "ProductCode": "AU-29854-Single"
            },
            {
                "OtherId": "1",
                "ProductCode": "TV-BB21084623"
            }
        ]
    }
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-02 20:00:42

因为您的main是一个数组,所以我假设您可能会在其中有多个主项。如果是这样的话,下面有一种方法可以将line项合并到每个条目上:

代码语言:javascript
复制
const mergedMainItems = 
    main.map(mainItem=>({
        ...mainItem, 
        lines: lines.filter(line=>mainItem["Id"] === line["OtherId"])
    }))
票数 1
EN

Stack Overflow用户

发布于 2019-07-02 19:48:38

对于这个例子,我认为这是可行的:

代码语言:javascript
复制
let result = [];
result.push({...main[0]}); //or even result.push(main[0])
result[0].lines = [];
for(let l in lines){
  if(lines[l].code != "Don't Merge"){
    result[0].lines.push({OtherId: lines[l].OtherId, ProductCode: lines[l].code})
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56859064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档