В простом Javascript вы можете получить ключи, сравнить длину и перебрать ключи и проверить, являются ли значения объектами.
function compareKeys(a, b) {
var keysA = Object.keys(a),
keysB = Object.keys(b);
return keysA.length === keysB.length
&& keysA.every(k => b.hasOwnProperty(k) && (
a[k] && typeof a[k] === 'object' ||
b[k] && typeof b[k] === 'object'
? compareKeys(a[k], b[k])
: true));
}
const
objA = { one: { a: 10, b: 'string1', c: { d: 10 } }, two : 'string1' },
objB = { one: { a: 20, b: 'string2', c: { d: 20 } }, two : 'string2' },
objC = { one: { a: 20, b: 'string2', c: { d: 20, e: false } }, two : 'string2' };
console.log(compareKeys(objA, objB));
console.log(compareKeys(objA, objC));
console.log(compareKeys({ a: {} }, { a: "test" }));
console.log(compareKeys({ a: "test" }, { a: {} }));
console.log(compareKeys({ a: { b: "new str" } }, { a: "test" }));