gpt4 book ai didi

javascript - 如何合并两个对象数组

转载 作者:可可西里 更新时间:2023-11-01 13:35:48 25 4
gpt4 key购买 nike

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

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 上,这两个数组都有。

我试着关注这个How to merge these arrays/json objects?还有这个How can I merge properties of two JavaScript objects dynamically?

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

编辑

我试图简化我的示例。实际上,上面两个数组只是共同的id,它们不止有name,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);

关于javascript - 如何合并两个对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com