Javascript 如何合并两个对象中的数组?

Javascript 如何合并两个对象中的数组?,javascript,jquery,Javascript,Jquery,我有点像: var object1 = { 'tab1' : [{ test : 10 }, { test : 15 }], 'tab2' : [{ test : 15 }] }; var object2 = { 'tab2' : [{ test : 35 }, { test : 25 }], 'tab3' : [{ test : 40 }] }; 我需要结果: var object3 = { 'tab1' : [{ test : 10 }, { test : 15 }],

我有点像:

var object1 = { 'tab1' : [{ test : 10 }, { test : 15 }], 'tab2' : [{ test : 15 }] };

var object2 = { 'tab2' : [{ test : 35 }, { test : 25 }], 'tab3' : [{ test : 40 }] };
我需要结果:

var object3 = { 
    'tab1' : [{ test : 10 }, { test : 15 }],
    'tab2' : [{ test : 35 }, { test : 25 }, { test : 15 }],
    'tab3' : [[{ test : 40 }]
};
我该怎么做


$.extend(true,object1,object2)
选项卡2中返回不带
{test:15}
的对象

var merged = [];
for (var key in object1) {
    if (object1.hasOwnProperty(key)){
       var obj1Arr, obj2Arr;
       obj1Arr = object1[key];
       obj2Arr = object2[key];

       if (obj1Arr) merged = merged.concat(obj1Arr);
       if (obj2Arr) merged = merged.concat(obj2Arr);
       object3[key] = merged;
        merged = [];
    }
}

for (var key in object2) {
    if (object2.hasOwnProperty(key) && !object3[key]){ // ignore the keys we already found
       var obj1Arr, obj2Arr;
       obj1Arr = object1[key];
       obj2Arr = object2[key];

       if (obj1Arr) merged = merged.concat(obj1Arr);
       if (obj2Arr) merged = merged.concat(obj2Arr);
       object3[key] = merged;
       merged = []; 
    }
}
console.log(object3) 和小提琴


您可以通过将if语句中的公共代码放入函数中来稍微清理一下…

表2中的顺序不是随机的,首先应该是tab2 object2中的对象,然后是rest@howderek他说了他所尝试的:他尝试了一个
$.extend
调用,结果中没有给他
test:15
。你正在寻找一个jQuery不支持的深度合并。您必须执行某种递归合并。@EliGassert谢谢,我错过了。几乎很好,但请记住,tab2中的顺序不是随机的,首先应该是tab2 object2中的对象,然后再切换首先合并的数组