如何合并两个对象数组

我有两个对象数组,如下所示:

result= [{id:24, name:"xyz"}, {id:45,name:"tze"}] moreDetails= [{id:24, name2:"hyi"}, {id:45, name2:"tikw"}] 

我想要像上面这样合并上面的结果

 mergedResult= [{id:24, name:"xyz", name2:"hyi"}, {id:45,name:"tze", name2:"tikw"}] 

请注意两个数组都有id的id合并。

我试着按照这个如何合并这些数组/ json对象? 这个如何动态合并两个JavaScript对象的属性?

但是,我认为我迷路了,我的问题可能需要简短而简单的解决方案。

编辑

我试图简化我的例子。 实际上,上述两个数组只有id共同,它们有名称name2。 例如,某些时候result数组将具有id, name, name2, name3moreDetails将具有id, name, name4 。 我想说,我并不总是提前知道除了id之外两个数组都会有什么。 因此,我不能将字段名称硬编码为一些建议的答案。

您可以使用for循环,在这种情况下,扩展其中一个数组的元素比创建另一个数组更好:

 for (var i = 0; i < result.length; i++) { result[i].name2 = moreDetails[i].name2; } 

http://jsfiddle.net/9uchU/

如果目标元素具有不同的索引:

 for (var i = 0; i < result.length; i++) { var c = result[i], // filtering the second array based on the `id` // of the current element m = moreDetails.filter(function(elem) { return elem.id === c.id; })[0]; c.name2 = m ? m.name2 : 'not defined'; } 

编辑:根据您的上次编辑,如@Blender提到的,您还可以使用jQuery $.extend()实用程序函数:

 $.extend(result, moreDetails);