Skip to content

Instantly share code, notes, and snippets.

@hackingbeauty
Last active December 24, 2015 10:59
Show Gist options
  • Select an option

  • Save hackingbeauty/6787912 to your computer and use it in GitHub Desktop.

Select an option

Save hackingbeauty/6787912 to your computer and use it in GitHub Desktop.
function merge(obj1, obj2){
var mergedObj = {}, subHash = {};
for(key in obj1){
mergedObj[key] = obj1[key];
}
for(key in obj2){ // iterate through level1 keys of obj2
if(!mergedObj.hasOwnProperty(key)){
mergedObj[key] = obj2[key]; // if key of obj2 does not exist, add to mergedObj
} else {
subHash = mergedObj[key];
if(obj2[key].constructor == Array){
mergedObj[key] = obj2[key];
} else {
for(key2 in obj2[key]){ // iterate through level2 keys of obj2
subHash[key2] = obj2[key][key2];
}
mergedObj[key] = subHash;
}
}
}
return mergedObj;
}
var mergeResult = merge(
{
name: 'Mickey Mouse',
created: 1928,
gender: 'Male',
friends: [ 'Minnie Mouse', 'Donald Duck', 'Goofy' ],
appearances: {
'Steamboat Willie': 1928,
'The Band Concert': 1935,
'Brave Little Tailor': 1938
},
age: function() {
return new Date().getFullYear() - this.created;
}
},
{
ears: true,
friends: [ 'Minnie' ],
appearances: {
'Fantasia': 1940
}
}
);
console.log("mergeResult is " , mergeResult);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment