I am trying to merge my objects and get a result like below
{
    "sports": {
        "basketball": "kobe",
        "swimming": {
        },
        "football": "ronaldo",
        "running": "",
        "highJump": ""
    },
    "calendar": ["21", "25", "30"]
}
- Somewhere I am doing wrong in my logic can you help me out
- but if I alternate my sportA and sportsB value I am getting expected results...not sure what problem in my current scenario
- providing my code below.
- fiddle
https://jsfiddle.net/tjLk0frq/3/
var sportsA ={
    "sports": {
        "basketball": "kobe",
        "football": "ronaldo"
    }
};
var sportsB ={
    "sports": {
        "basketball": "",
        "swimming": {
        },
        "football": "",
        "running": "",
        "highJump": ""
    },
    "calendar": ["21", "25", "30"]
};
function merge(sportsA, sportsB) {
    for( var p in sportsB )
        if( sportsA.hasOwnProperty(p) )
            sportsA[p] = typeof sportsB[p] === 'object' ? merge(sportsA[p], sportsB[p]) : sportsB[p];
    return sportsA;
}
merge(sportsA, sportsB );
console.log("unexpected result" + sportsA ); 
console.log( sportsA ); 
//expected
/*
{
    "sports": {
        "basketball": "kobe",
        "swimming": {
        },
        "football": "ronaldo",
        "running": "",
        "highJump": ""
    },
    "calendar": ["21", "25", "30"]
}
*/
 
     
     
     
    