Javascript 存在'时合并两个对象;这是一把新钥匙

Javascript 存在'时合并两个对象;这是一把新钥匙,javascript,jquery,object,merge,Javascript,Jquery,Object,Merge,我有两个具有以下结构的对象,并尝试将它们合并在一起 我尝试了$.merge,但它不是预期的结果 对象1-没有所有属性 { "id": 23, "name": "Article", "related": 15 "items": [{ "name": "Test1", "items": [{ "name": "Test2", "items": [{ "name":

我有两个具有以下结构的对象,并尝试将它们合并在一起

我尝试了$.merge,但它不是预期的结果

对象1-没有所有属性

{
    "id": 23,
    "name": "Article",
    "related": 15 "items": [{
        "name": "Test1",
        "items": [{
            "name": "Test2",
            "items": [{
                "name": "Test3",
                "items": [{
                    "name": "Test4",
                    "items": [{
                        "name": "Test5",
                        "items": [{
                            "name": "Test6",
                        }]
                    }]
                }]
            }]
        }]
    }]
}, {
    "id": 24…
}
{
    "id": 23,
    "name": "Article",
    "related": 15 "items": [{
        "name": "Test1",
        "id": 34 "items": [{
            "name": "Test2",
            "id": 57 "items": [{
                "name": "Test3",
                "id": 92 "items": [{
                    "name": "THIS ONE IS NOT EXISTING IN OBJECT 1 AND SHOULD NOT GET MERGED",
                    "id": 789
                }, {
                    "name": "Test4",
                    "id": 12 "items": [{
                        "name": "Test5",
                        "id": 321 "items": [{
                            "name": "Test6",
                            "id": 285
                        }]
                    }]
                }]
            }]
        }]
    }]
}, {
    "id": 24…
}
对象2-具有附加属性

{
    "id": 23,
    "name": "Article",
    "related": 15 "items": [{
        "name": "Test1",
        "items": [{
            "name": "Test2",
            "items": [{
                "name": "Test3",
                "items": [{
                    "name": "Test4",
                    "items": [{
                        "name": "Test5",
                        "items": [{
                            "name": "Test6",
                        }]
                    }]
                }]
            }]
        }]
    }]
}, {
    "id": 24…
}
{
    "id": 23,
    "name": "Article",
    "related": 15 "items": [{
        "name": "Test1",
        "id": 34 "items": [{
            "name": "Test2",
            "id": 57 "items": [{
                "name": "Test3",
                "id": 92 "items": [{
                    "name": "THIS ONE IS NOT EXISTING IN OBJECT 1 AND SHOULD NOT GET MERGED",
                    "id": 789
                }, {
                    "name": "Test4",
                    "id": 12 "items": [{
                        "name": "Test5",
                        "id": 321 "items": [{
                            "name": "Test6",
                            "id": 285
                        }]
                    }]
                }]
            }]
        }]
    }]
}, {
    "id": 24…
}

有人知道一些聪明的把戏吗?jQuery是否必要?

jQuery的$.extend将执行您想要的操作

//merging two objects into new object
var new_object = $.extend(true, {}, object1, object2);

//merge object2 into object1
$.extend(true, object1, object2);
第一个参数:deep:true,请参阅:

不带jquery:


如果需要多个项目,则必须循环mymerge_sub(object1.items[j]…)

不需要jquery,您需要1或2个循环和一个递归函数。@nem:“此功能是非标准的,不在标准轨道上。请勿在面向Web的生产站点上使用”。最好的提示:不清楚你要什么。对象2已经是对象1和对象2的合并,所以只需获取对象2,您就完成了。也许你的意思是当两者都有“新的东西”?@pid我必须找到对象,其中一个具有不同的附加属性。合并对象应该包含这些。您知道您给出的示例不是一个好的示例吗?这是不必要的麻烦,当两者都有新属性时,它不会显示一般情况。此外,你意识到你可以有碰撞吗?如果两者都用不同的值重新定义同一属性,您会选择哪一个?通常情况下,冲突无法处理,应该抛出一个异常。@charlietfl:他要求合并新的键,但他没有告诉我他想合并现有的键。如果是这样,他必须删除代码中的一个条件(omg)。合并和覆盖不是一回事。还请注意,这些对象现在是彼此的引用。不清楚这是否正确…我编辑了描述。我认为第一种描述有误导性。