Javascript 存在'时合并两个对象;这是一把新钥匙
我有两个具有以下结构的对象,并尝试将它们合并在一起 我尝试了$.merge,但它不是预期的结果 对象1-没有所有属性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":
{
"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)。合并和覆盖不是一回事。还请注意,这些对象现在是彼此的引用。不清楚这是否正确…我编辑了描述。我认为第一种描述有误导性。