Я всегда приезжаю сюда из Google, и я всегда не удовлетворен ответами. Вы отвечаете хорошо, но это будет проще и быстрее, используя underscore.js
DEMO: http://jsfiddle.net/guya/eAWKR/
Вот более общая функция, которая объединит 2 массива, используя свойство их объектов. В этом случае свойство «name»
var arr1 = [{name: "lang", value: "English"}, {name: "age", value: "18"}];
var arr2 = [{name : "childs", value: '5'}, {name: "lang", value: "German"}];
function mergeByProperty(arr1, arr2, prop) {
_.each(arr2, function(arr2obj) {
var arr1obj = _.find(arr1, function(arr1obj) {
return arr1obj[prop] === arr2obj[prop];
});
arr1obj ? _.extend(arr1obj, arr2obj) : arr1.push(arr2obj);
});
}
mergeByProperty(arr1, arr2, 'name');
console.log(arr1);
[{name: "lang", значение: "German"}, {name: "age", value: "18"}, {name : "childs", значение: '5'}]