@ User863 получил ответ с loada sh, вот решение в простом виде js:
function checkObjEquality(obj1, obj2, keysToIgnore = []) {
const keysObj1 = Object.keys(obj1).filter(x => !keysToIgnore.length ||
!keysToIgnore.includes(x));
const keysObj2 = Object.keys(obj2).filter(x => !keysToIgnore.length ||
!keysToIgnore.includes(x));
// There are not the same number of keyx, the objects can't be equals
if (keysObj1.length !== keysObj2.length) {
return false;
}
// one key of Obj1 doesn't exist in Obj2
if (keysObj1.some(x => !keysObj2.includes(x))) {
return false;
}
// Check that every key have the same value
return keysObj1.every(x => obj1[x] === obj2[x]);
}
console.log(checkObjEquality({
class: '',
kind: 'nats',
url: 'http://some.valid',
$$hashKey: 'object:37'
}, {
class: '',
kind: 'nats',
url: 'http://some.valid',
}, ['$$hashKey']));
console.log(checkObjEquality({
class: '',
kind: 'NOPE',
url: 'http://some.valid',
$$hashKey: 'object:37'
}, {
class: '',
kind: 'nats',
url: 'http://some.valid',
}, ['$$hashKey']));
console.log(checkObjEquality({
class: '',
kind: 'nats',
url: 'http://some.valid',
$$hashKey: 'object:37'
}, {
class: '',
kind: 'nats',
}, ['$$hashKey']));