Merge Objects

http://stackoverflow.com/a/35050226/2773837

by Jacob

JavaScript

/*
StackOverflow answer: http://stackoverflow.com/a/35050226/2773837
*/

var sportsA = {
    "sports": {
        "basketball": "kobe",
        "football": "ronaldo"
    }
};

var sportsB = {
    "sports": {
        "basketball": "",
        "swimming": {},
        "football": "",
        "running": "",
        "highJump": ""
    },
    "calendar": ["21", "25", "30"]
};

function merge (obj1, obj2) {
    var result = {};

    for (var prop in obj1) {
        if (typeof obj1[prop] === "object" && typeof obj2[prop] === "object")
            result[prop] = merge(obj1[prop], obj2[prop]);
        else
            result[prop] = obj1[prop];
    }

    for (var prop in obj2) {
        result[prop] = (result[prop] ? result[prop] : obj2[prop]);
    }

    return result;
}

console.log(JSON.stringify(merge(sportsA, sportsB)));