合并数组中的Javascript角组合匹配的对象 [英] Merge Arrays Combining Matching Objects in Angular Javascript
问题描述
我在角JS,我要合并2数组对象(重叠/组合)匹配的。
例如,阵列1是这样的:
[
{ID:1,名:亚当},
{ID:2,名:史密斯},
{ID:3,名:夏娃},
{ID:4,名:加里},
]
阵列2是这样的:
[
{ID:1,名:亚当,检查:真正},
{ID:3,名:夏娃,检查:真正},
]
我要合并,成为这个结果后的数组:
[
{ID:1,名:亚当,检查:真正},
{ID:2,名:史密斯},
{ID:3,名:夏娃,检查:真正},
{ID:4,名:加里},
]
这可能吗?我曾尝试角的 array_merge
和 array_extend
是这样的:
angular.merge([],$ scope.array1,$ scope.array2);
angular.extend([],$ scope.array1,$ scope.array2);
但是上述方法重叠在阵列的前2对象和基于匹配的数据不合并。是具有的foreach
循环这个唯一的解决办法?
有人可以指导我在这里吗?
如果合并的这一发现是由AngularJS支持不肯定。我做了一个片断这不正是相同的:
函数合并(数组1,数组2){\r
VAR IDS = [];\r
变种merge_obj = [];\r
\r
array1.map(功能(ELE){\r
如果(!(ids.indexOf(ele.id)-1个)){\r
ids.push(ele.id);\r
merge_obj.push(ELE);\r
}\r
});\r
\r
array2.map(功能(ELE){\r
VAR指数= ids.indexOf(ele.id);\r
如果((索引>!-1)){\r
ids.push(ele.id);\r
merge_obj.push(ELE);\r
}其他{\r
merge_obj [指数] = ELE;\r
}\r
});\r
\r
的console.log(merge_obj);\r
}\r
\r
VAR数组1 = {[\r
标识:1,\r
名:亚当\r
},{\r
ID:2,\r
名:史密斯\r
},{\r
ID:3,\r
名:夏娃\r
},{\r
ID:4,\r
名:加里\r
}]\r
\r
变种数组2 = [{\r
标识:1,\r
名:亚当,\r
检查:真\r
},{\r
ID:3,\r
名:夏娃\r
检查:真\r
}];\r
\r
合并(数组1,数组2);
\r
I have 2 array objects in Angular JS that I wish to merge (overlap/combine) the matching ones.
For example, the Array 1 is like this:
[
{"id":1,"name":"Adam"},
{"id":2,"name":"Smith"},
{"id":3,"name":"Eve"},
{"id":4,"name":"Gary"},
]
Array 2 is like this:
[
{"id":1,"name":"Adam", "checked":true},
{"id":3,"name":"Eve", "checked":true},
]
I want the resulting array after merging to become this:
[
{"id":1,"name":"Adam", "checked":true},
{"id":2,"name":"Smith"},
{"id":3,"name":"Eve", "checked":true},
{"id":4,"name":"Gary"},
]
Is that possible? I have tried angular's array_merge
and array_extend
like this:
angular.merge([], $scope.array1, $scope.array2);
angular.extend([], $scope.array1, $scope.array2);
But the above method overlap the first 2 objects in array and doesn't merge them based on matching data. Is having a foreach
loop the only solution for this?
Can someone guide me here please?
Not sure if this find of merge is supported by AngularJS. I've made a snippet which does exactly the same:
function merge(array1, array2) {
var ids = [];
var merge_obj = [];
array1.map(function(ele) {
if (!(ids.indexOf(ele.id) > -1)) {
ids.push(ele.id);
merge_obj.push(ele);
}
});
array2.map(function(ele) {
var index = ids.indexOf(ele.id);
if (!( index > -1)) {
ids.push(ele.id);
merge_obj.push(ele);
}else{
merge_obj[index] = ele;
}
});
console.log(merge_obj);
}
var array1 = [{
"id": 1,
"name": "Adam"
}, {
"id": 2,
"name": "Smith"
}, {
"id": 3,
"name": "Eve"
}, {
"id": 4,
"name": "Gary"
}, ]
var array2 = [{
"id": 1,
"name": "Adam",
"checked": true
}, {
"id": 3,
"name": "Eve",
"checked": true
}, ];
merge(array1, array2);
这篇关于合并数组中的Javascript角组合匹配的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!