Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 1x 23x 23x 23x 23x 23x 3x 20x 24x 1x 23x 23x 23x 4x 1x 19x 4x 2x 15x 4x 12x 1x 29x 29x 3x 26x 3x 23x 44x 44x 44x 4x 1x 40x 6x 2x 34x 6x 14x | export function checkIfObjectsAreEqual(obj1: any, obj2: any): boolean {
Iif (obj1 === obj2) {
return true;
}
Iif (typeof obj1 !== "object" || obj1 === null || typeof obj2 !== "object" || obj2 === null) {
return false;
}
const keys1 = Object.keys(obj1);
const keys2 = Object.keys(obj2);
if (keys1.length !== keys2.length) {
return false;
}
for (const key of keys1) {
if (!keys2.includes(key)) {
return false;
}
const val1 = obj1[key];
const val2 = obj2[key];
if (Array.isArray(val1) && Array.isArray(val2)) {
if (!checkIfArraysAreEqual(val1, val2)) {
return false;
}
} else if (typeof val1 === "object" && typeof val2 === "object") {
if (!checkIfObjectsAreEqual(val1, val2)) {
return false;
}
} else if (val1 !== val2) {
return false;
}
}
return true;
}
export function checkIfArraysAreEqual(arr1: any[], arr2: any[]): boolean {
Iif (arr1 === arr2) {
return true;
}
if (!Array.isArray(arr1) || !Array.isArray(arr2)) {
return false;
}
if (arr1.length !== arr2.length) {
return false;
}
for (let i = 0; i < arr1.length; i++) {
const val1 = arr1[i];
const val2 = arr2[i];
if (Array.isArray(val1) && Array.isArray(val2)) {
if (!checkIfArraysAreEqual(val1, val2)) {
return false;
}
} else if (
typeof val1 === "object" &&
typeof val2 === "object" &&
val1 !== null &&
val2 !== null
) {
if (!checkIfObjectsAreEqual(val1, val2)) {
return false;
}
} else if (val1 !== val2) {
return false;
}
}
return true;
}
|