{"ScriptPreparationCode":"// 1 levels deep\r\nwindow.foo3 = {\r\n a: 1,\r\n b: 2,\r\n c: {\r\n a: 1,\r\n b: 2,\r\n c: {\r\n a: 1,\r\n b: 2\r\n }\r\n }\r\n};\r\nwindow.bar3 = {\r\n a: 1,\r\n b: 2,\r\n c: {\r\n a: 1,\r\n b: 2,\r\n c: {\r\n a: 1,\r\n b: 4\r\n }\r\n }\r\n};","TestCases":[{"Name":"Lodash Equal: 1","Code":"_.isEqual(window.foo3, window.bar3)","IsDeferred":false},{"Name":"Manual Equal","Code":"const 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 = isObject(value1) \u0026\u0026 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\r\nconst isObject = (object) =\u003E {\r\n return object != null \u0026\u0026 typeof object === \u0022object\u0022;\r\n};\r\n\r\nisDeepEqual(window.foo3, window.bar3)","IsDeferred":false}]}