【发布时间】:2020-02-01 01:21:13
【问题描述】:
如何合并 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
}
输出:
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
}
【问题讨论】:
-
查看“深度合并”的搜索结果。您甚至可能需要编写自己的自定义合并函数来执行诸如合并来自两个数组的所有值之类的事情(例如,如果两个数组具有相同的值,您是否保留两者?如果两个数组包含对象,您是否进行深度比较对象?)。
标签: javascript json typescript