2628. JSON Deep Equal ¶ TypeScript 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 31type JSONValue = | null | boolean | number | string | JSONValue[] | { [key: string]: JSONValue }; function areDeeplyEqual(o1: JSONValue, o2: JSONValue): boolean { if (o1 === o2) { return true; } if (o1 === null || o1 === undefined || o2 === null || o2 === undefined) { return false; } if (typeof o1 !== 'object' || typeof o2 !== 'object') { return false; } if (Array.isArray(o1) !== Array.isArray(o2)) { return false; } if (Object.keys(o1).length != Object.keys(o2).length) { return false; } for (const key in o1) { if (!areDeeplyEqual(o1[key], o2[key])) { return false; } } return true; }