如何合并两个数组的对象
How to merge two array of objects
我有两个对象数组,如下:
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
上,这两个数组都有。
我试图遵循这一个如何合并这些数组/json对象?我如何动态地合并两个JavaScript对象的属性?
但是,我想我迷路了,我的问题可能需要一个简短的解决方案。
编辑
我试图简化我的例子。实际上,上述两个数组只有id
的共同点,它们有不止名称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;
}
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);
<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>
相关文章:
- 如何使用 node.js 比较两个 json 数组
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 访问$.ajax()函数中的两个不同数组
- 正在更新mongod中两个对象内部的数组
- 如何使用javascript合并两个对象数组
- 比较包含多个值对的两个JavaScript数组
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- 检查来自不同数组的两个元素的一个属性是否相等
- 如何在javascript中合并两个对象数组
- JavaScript - 合并两个对象数组并根据属性值删除重复数据
- 效率:整数数组的一个子集中两个项之间的最大差值
- 将两个值组合成extjs 4.1的形式
- 如何将中的两个geoJSON功能集合添加到两个层组中
- 在 JQuery 验证中验证多个“数组命名”文件输入和下拉列表
- 在一个区间之间生成两个随机数组
- 使用两个捕获组和JavaScript的replace()函数
- 通过找到两个重复组之一的正则表达式组
- 从Javascript中的两个子数组中获取随机结果
- 如何在一个可选的非捕获组中创建两个捕获组
- paper.js:获取两个层/组的原始像素数据