我的问题是:
我有 2 个这样的数组对象
var array1 = [{ "id": 1, "name": "potatoe", photo="photo"}, {"id": 2, "name": "budget"}]
var array2 = [{ "id": 1, "name": "potatoeModified"},{ "id": 3, "name":
"UhOhAnotherName"}, {"id": 2, "name": "budget"}]
我想搜索数组 2 中是否有 array1 ID 对象,如果是 id 1 = 1 名称将被替换,如果不存在则添加 id 3。
结果会是
[{ "id": 1, "name": "potatoeModified", photo="photo"}, {"id": 2, "name": "budget"},
{ "id": 3, "name": "UhOhAnotherName"}]
我尝试这样做,但每次我都得到一个圈复杂度太高的函数,我不想为此使用一个超大函数。我认为解决方案很简单,但我太盲目了..... 谢谢:)
最佳答案
尝试以下操作:
var array1 = [{ "id": 1, "name": "potatoe", "photo":"photo"}, {"id": 2, "name": "budget"}];
var array2 = [{ "id": 1, "name": "potatoeModified"},{ "id": 3, "name":
"UhOhAnotherName"}, {"id": 2, "name": "budget"}];
array1.map(function(val,i){
array2.forEach(function(v){
if(val.id == v.id){
val.name = v.name;
}
else{
var found = array1.some(function (el) {
return el.id === v.id;
});
if (!found) { array1.push(v); }
}
})
return val;
});
console.log(array1);
关于Javascript/Angular JS 搜索数组对象到数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43553254/