Javascript Json合并左或右类型脚本

Javascript Json合并左或右类型脚本,javascript,json,typescript,Javascript,Json,Typescript,我如何合并Json对象,以便在合并Json a和Json B时,然后在键匹配时覆盖简单值字符串或数字或布尔值等,但在合并复杂值数组和对象时,则有两种结果。 1.如果是字符串的简单数组,则合并字符串;如果是对象,则应用递归解决方案。 2.如果是对象,则应用递归解决方案 这是预期的输出。 我尝试过各种npm软件包,但仍然在寻找一个完美的解决方案 const A = { Results: [ { PgId: "pg1", Enti

我如何合并Json对象,以便在合并Json a和Json B时,然后在键匹配时覆盖简单值字符串或数字或布尔值等,但在合并复杂值数组和对象时,则有两种结果。 1.如果是字符串的简单数组,则合并字符串;如果是对象,则应用递归解决方案。 2.如果是对象,则应用递归解决方案

这是预期的输出。 我尝试过各种npm软件包,但仍然在寻找一个完美的解决方案

const A = {
    Results: [
        {
            PgId: "pg1",
            Entities: [
                {
                    EntityName: "Customer",
                    Subjects: [
                        {
                            first_name: "Mark",
                            last_name: "woodruff",
                            location: "tenino"
                        },
                        {
                            first_name: "helen1",
                            last_name: "mclean1",
                            location: "washington1"
                        }
                    ]
                }
            ]
        }
    ],
    pets: ['Cat', 'Parrot'],
    isComplete: false
}

const B = {
    Results: [
        {
            PgId: "pg1",
            Entities: [
                {
                    EntityName: "Customer",
                    Subjects: [
                        {
                            first_name: "Mark",
                            last_name: "woodruff",
                            location: "tenino"
                        },
                        {
                            first_name: "helen",
                            last_name: "mclean",
                            location: "washington"
                        }
                    ]
                }
            ]
        }
    ],
    pets: ['Dog'],
    isComplete: true
}
输出:


您必须递归地遍历对象的属性,用目标值覆盖源值

如果您对“github gist javascript mergedeep”执行搜索引擎查询,则有以下解决方案:

在使用该解决方案合并数组中的值时,可能必须谨慎。如果要这样做,可能需要包括一些处理数组和对象的内容,如下面的解决方案:


我使用了类似于这两种方法的解决方案

查看合并深度的搜索结果。您甚至可能需要编写自己的自定义合并函数来执行诸如合并来自两个数组的所有值之类的操作。例如,如果两个数组具有相同的值,您是否同时保留这两个值?。如果两个数组包含对象,是否对对象进行深入比较?。
    const mergedBA_B_overrides_A = {
    Results: [
        {
            PgId: "pg1",
            Entities: [
                {
                    EntityName: "Customer",
                    Subjects: [
                        {
                            first_name: "Mark",
                            last_name: "woodruff",
                            location: "tenino"
                        },
                        {
                            first_name: "helen",
                            last_name: "mclean",
                            location: "washington"
                        },
                        {
                            first_name: "helen1",
                            last_name: "mclean1",
                            location: "washington"
                        }
                    ]
                }
            ]
        }
    ],
    pets: ['Dog','Cat', 'Parrot'],
    isComplete: true
}