akk*_*akk 5 html javascript jquery web
我有两个对象数组,如下所示:
result = [{id:24, name:"xyz"}, {id:45,name:"tze"}]
moreDetails = [{id:24, name2:"hyi"}, {id:45, name2:"tikw"}]
Run Code Online (Sandbox Code Playgroud)
我想要一个上面这样的合并结果
mergedResult= [{id:24, name:"xyz", name2:"hyi"}, {id:45,name:"tze", name2:"tikw"}]
Run Code Online (Sandbox Code Playgroud)
请注意合并发生在id,这两个数组都有。
我试图遵循这个How to merge these arrays/json objects? 而这个我如何动态合并两个 JavaScript 对象的属性?
但是,我想我迷路了,我的问题可能需要一个简短而简单的解决方案。
编辑
我试图简化我的例子。实际上,上面两个数组只是有一个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;
}
Run Code Online (Sandbox Code Playgroud)
如果目标元素具有不同的索引:
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';
}
Run Code Online (Sandbox Code Playgroud)
编辑:根据您上次的编辑,正如 @Blender 提到的,您还可以使用 jQuery$.extend()实用函数:
$.extend(result, moreDetails);
Run Code Online (Sandbox Code Playgroud)