JSFiddle - React, Tailwind, and code Playground

JavaScript

var A = {
    a1: {
        c1: 50,
        c2: 50,
    },
    b1: {
        d1: 0,
        d2: {
            1: "hello"
        },
        d3: {
            2: "world"
        },
    }
};
var B = {
        a1: {
            c1: 1,
            c2: 125,
        },
    };

function completarObjetos(original, aCompletar) {
    function dup(o) {
        return JSON.parse(JSON.stringify(o));
    };

    for (var key in original) {
        var obj = original[key];
        var aC = aCompletar[key];
        if (aC) {
            if (dup(aC) == dup(obj)) continue;
            else aCompletar[key] = completarObjetos(obj, aC);
        } else {
            aCompletar[key] = dup(obj);
        }
    }
    return aCompletar;
}

console.log(JSON.stringify(B));
completarObjetos(A, B);
alert(JSON.stringify(B, null, 4));