Недавно я столкнулся с этой проблемой, и я пришел сюда с надеждой получить ответ, но принятый ответ использует 2 для петель, которые я бы не предпочел. Наконец, мне удалось сделать свой собственный. Не зависит от какой-либо библиотеки:
function find(objArr, keyToFind){
var foundPos = objArr.map(function(ob){
return ob.type;
}).indexOf(keyToFind);
return foundPos;
}
function update(arr1,arr2){
for(var i = 0, len = arr2.length, current; i< len; i++){
var pos = find(arr1, arr2[i].name);
current = arr2[i];
if(pos !== -1) for(var key in arr2) arr1[pos][key] = arr2[key];
else arr1[arr1.length] = current;
}
}
Это также поддерживает порядок arr1.