piral-core
Version:
The core library for creating a Piral instance.
51 lines (40 loc) • 818 B
text/typescript
function compareObjects(a: any, b: any) {
for (const i in a) {
if (!(i in b)) {
return false;
}
}
for (const i in b) {
if (!isSame(a[i], b[i])) {
return false;
}
}
return true;
}
function compareArrays(a: Array<any>, b: Array<any>) {
const l = a.length;
if (l === b.length) {
for (let i = 0; i < l; i++) {
if (!isSame(a[i], b[i])) {
return false;
}
}
return true;
}
return false;
}
export function isSame<T>(a: T, b: T) {
if (a !== b) {
const ta = typeof a;
const tb = typeof b;
if (ta === tb && ta === 'object' && a && b) {
if (Array.isArray(a) && Array.isArray(b)) {
return compareArrays(a, b);
} else {
return compareObjects(a, b);
}
}
return false;
}
return true;
}