{"ScriptPreparationCode":"var obj1 = {\r\n firstName: \u0027Ronald\u0027,\r\n lastName: \u0027Reagan\u0027,\r\n password: \u002723k4jlqrkjq2343q\u0027,\r\n hairColor: \u0027brown\u0027\r\n};\r\n\r\nvar obj2 = {\r\n firstName: \u0027James\u0027,\r\n hairColor: \u0027black\u0027,\r\n phoneNumber: \u00278055555555\u0027\r\n}\r\n\r\n function merge(destination, source) {\r\n angular.forEach(source, function(value, key) {\r\n if (angular.isDefined(destination[key])) {\r\n if (angular.isObject(destination[key]) \u0026\u0026 !angular.isArray(destination[key])) {\r\n destination[key] = merge(destination[key], source[key]);\r\n } else {\r\n destination[key] = source[key];\r\n }\r\n } else { // adds value to the destination object\r\n destination[key] = source[key];\r\n }\r\n });\r\n return destination;\r\n }","TestCases":[{"Name":"Angular merge","Code":"var newObj = merge(obj1, obj2);","IsDeferred":false},{"Name":"Lodash merge","Code":"var newObj = _.merge(obj1, obj2);","IsDeferred":false}]}