{"ScriptPreparationCode":"// 1 level deep\r\nwindow.foo1 = { a: 1, b: 2, c: { a: 1, b: 2, c: { a: 1, b: 2 } } };\r\nwindow.bar1 = { a: 1, b: 3, c: { a: 1, b: 2, c: { a: 1, b: 2 } } };\r\n\r\n// 2 levels deep\r\nwindow.foo2 = { a: 1, b: 2, c: { a: 1, b: 2, c: { a: [1,2], b: 2 } } };\r\nwindow.bar2 = { a: 1, b: 2, c: { a: 1, b: 3, c: { a: [1,2], b: 2 } } };\r\n\r\n// 3 levels deep\r\nwindow.foo3 = { a: 1, b: 2, c: { a: 1, b: 2, c: { a: [1,2], b: [1,2] } } };\r\nwindow.bar3 = { a: 1, b: 2, c: { a: 1, b: 2, c: { a: [1,2], b: [1,2] } } };","TestCases":[{"Name":"_.isEqual 1","Code":"_.isEqual(window.foo1, window.bar1)","IsDeferred":false},{"Name":"Custom Recursive Function 1","Code":"const areObjectKeysValuesEqual = (obj1, obj2) =\u003E {\r\n if (Object.keys(obj1).length !== Object.keys(obj2).length) {\r\n return false;\r\n }\r\n for (key of Object.keys(obj1)) {\r\n if (typeof obj1[key] === \u0022object\u0022) {\r\n if (!areObjectKeysValuesEqual(obj1[key], obj2[key])) {\r\n return false;\r\n }\r\n }\r\n if (obj1[key] !== obj2[key]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nconst result = areObjectKeysValuesEqual(window.foo1, window.bar1);","IsDeferred":false},{"Name":"_.isEqual 2","Code":"_.isEqual(window.foo2, window.bar2)","IsDeferred":false},{"Name":"Custom Recursive Function 2","Code":"const areObjectKeysValuesEqual = (obj1, obj2) =\u003E {\r\n if (Object.keys(obj1).length !== Object.keys(obj2).length) {\r\n return false;\r\n }\r\n for (key of Object.keys(obj1)) {\r\n if (typeof obj1[key] === \u0022object\u0022) {\r\n if (!areObjectKeysValuesEqual(obj1[key], obj2[key])) {\r\n return false;\r\n }\r\n }\r\n if (obj1[key] !== obj2[key]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nconst result = areObjectKeysValuesEqual(window.foo2, window.bar2);","IsDeferred":false},{"Name":"_.isEqual 3","Code":"_.isEqual(window.foo3, window.bar3)","IsDeferred":false},{"Name":"Custom Recursive Function 3","Code":"const areObjectKeysValuesEqual = (obj1, obj2) =\u003E {\r\n if (Object.keys(obj1).length !== Object.keys(obj2).length) {\r\n return false;\r\n }\r\n for (key of Object.keys(obj1)) {\r\n if (typeof obj1[key] === \u0022object\u0022) {\r\n if (!areObjectKeysValuesEqual(obj1[key], obj2[key])) {\r\n return false;\r\n }\r\n }\r\n if (obj1[key] !== obj2[key]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\nconst result = areObjectKeysValuesEqual(window.foo3, window.bar3);","IsDeferred":false}]}