Javascript 如何合并两个对象数组

Javascript 如何合并两个对象数组,javascript,jquery,html,web,Javascript,Jquery,Html,Web,我有两个对象数组,如下所示: result=[{id:24,名称:“xyz”},{id:45,名称:“tze”}] moreDetails=[{id:24,name2:“hyi”},{id:45,name2:“tikw”}] 我想要上面这样的合并结果 mergedResult=[{id:24,名称:“xyz”,名称2:“hyi”},{id:45,名称:“tze”,名称2:“tikw”}] 请注意合并发生在id上,这两个数组都有 我试着跟着这个和这个 但是,我想我迷路了,我的问题可能需要一个简

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

result=[{id:24,名称:“xyz”},{id:45,名称:“tze”}]
moreDetails=[{id:24,name2:“hyi”},{id:45,name2:“tikw”}]
我想要上面这样的合并结果

mergedResult=[{id:24,名称:“xyz”,名称2:“hyi”},{id:45,名称:“tze”,名称2:“tikw”}]
请注意合并发生在
id
上,这两个数组都有

我试着跟着这个和这个

但是,我想我迷路了,我的问题可能需要一个简短的解决方案

编辑


我试图简化我的例子。实际上,上述两个数组都有
id
,它们的共同点不仅仅是name,name2。例如,有时
result
数组将具有
id、name、name2、name3
,而
moreDetails
将具有
id、name、name4
。我想说的是,除了
id
之外,我并不总是提前知道这两个数组将拥有什么。因此,我不能像一些答案建议的那样硬编码字段名。

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

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

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

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

函数findElement(arr、propName、propValue){
对于(变量i=0;i
函数findElement(arr、propName、propValue){
对于(变量i=0;i对于(var i=0;iYou也可以做
$.extend(结果[i],更多细节[i])
+1。我要试试这个。顺便说一句,请看我的编辑。我本来想用@Blender的评论来回答的,你应该把它作为一个答案。另外,我很确定你不需要[i]部分,只要$.extend(arr1,arr2);@Blender
$.extend(结果[i],更多细节[i])
有效。如果您不将您的评论作为答案发布,我将不得不接受这一条,非常感谢!@TomFobear it
$.extend(result,moreDetails)
没有[I]对我无效。您也可以做
$.extend(result[I],moreDetails[I])
+1.我要试试这个。顺便说一句,请查看我的编辑问题。我想用@Blender的评论来回答,你应该把它作为一个答案。另外,我很确定你不需要[I]部分,只要$.extend(arr1,arr2);@Blender
$.extend(结果[I],更多细节[I])
有效。如果您不将您的评论作为答案发布,我将不得不接受此评论,非常感谢!@TomFobear it
$扩展(结果,更多详细信息)
没有[I]对我无效。谢谢!请查看我的相关编辑。我提供了更多详细信息。为您更新了示例:)感谢您提供详细的代码示例,我将在获得15分后立即投票:)谢谢!,请看我的编辑问题。我提供了更多细节。为您更新了示例:)感谢提供详细的代码示例,我将在获得15分后立即对此帖子进行投票:)这是否回答了您的问题?这回答了你的问题吗?
$.extend(result, moreDetails);
<html>
<head><title></title>
<script src="http://code.jquery.com/jquery-1.10.0.min.js" ></script>
</head>
<body>

<script>
    function findElement(arr, propName, propValue) {
      for (var i=0; i < arr.length; i++){
        if (arr[i][propName] == propValue){
          return arr[i];
        }
      }
    }

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

    for (var i = 0; i<result.length;i++ ) {
      //mergedResult[i].name2 = findElement(moreDetails, "id", result[i].id).name2
    $.extend(mergedResult[i],findElement(moreDetails, "id", result[i].id));
    } 

    mergedResult;
</script>
</body>
</html>