function simpleCompare(a, b) {
if (a === b) return true;
const t = getType(a);
if (t !== getType(b)) return false;
if (t === 'Array') {
if (a.length !== b.length) return false;
for (let i = 0, l = a.length; i < l; i++)
if (!simpleCompare(a[i], b[i])) return false;
return true;
}
if (t === 'Date') return a.toString() === b.toString();
if (t === 'Object') {
const keys = Object.keys(a);
if (keys.length !== Object.keys(b).length) return false;
for (const k of keys)
if (!simpleCompare(a[k], b[k])) return false;
return true;
}
return false;
}
function getType(obj) {
return Object.prototype.toString.call(obj).slice(8, -1);
}
ну в-лоб-решение - это сравнить два json: JSON.stringify(obj1) === JSON.stringify(obj2). но тут я не уверен, что он расположит все проперти отсортированными.
чуть сложнее, это тоже stringify, но потом в каждой строке сосчитать сколько каких символов встречается и сравнить длины строк + по количеству символов. Коллизии весьма незначительны и можно пренебречь.
Ну а можно заморочиться с deep compare как по ссылке