{"ScriptPreparationCode":"window.foo3 = { a: 1, b: 2, c: { a: 1, b: 2, c: { a: 1, b: 2 } } };\r\nwindow.bar3 = { a: 1, b: 2, c: { a: 1, b: 2, c: { a: 1, b: 4 } } };\r\n\r\nwindow.isObject = (object) =\u003E {\r\n return object != null \u0026\u0026 typeof object === \u0022object\u0022;\r\n};\r\n\r\nwindow.isDeepEqual = (object1, object2) =\u003E {\r\n\r\n const objKeys1 = Object.keys(object1);\r\n const objKeys2 = Object.keys(object2);\r\n\r\n if (objKeys1.length !== objKeys2.length) return false;\r\n\r\n for (var key of objKeys1) {\r\n const value1 = object1[key];\r\n const value2 = object2[key];\r\n\r\n const isObjects = window.isObject(value1) \u0026\u0026 window.isObject(value2);\r\n\r\n if ((isObjects \u0026\u0026 !isDeepEqual(value1, value2)) ||\r\n (!isObjects \u0026\u0026 value1 !== value2)\r\n ) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n","TestCases":[{"Name":"Lodash Equal: ","Code":"_.isEqual(window.foo3, window.bar3)","IsDeferred":false},{"Name":"Manual Equal:","Code":"isDeepEqual(window.foo3, window.bar3);","IsDeferred":false}]}