{"ScriptPreparationCode":"function isEqual(x, y) {\r\n const ok = Object.keys, tx = typeof x, ty = typeof y;\r\n return x \u0026\u0026 y \u0026\u0026 tx === \u0027object\u0027 \u0026\u0026 tx === ty ? (\r\n ok(x).length === ok(y).length \u0026\u0026\r\n ok(x).every(key =\u003E isEqual(x[key], y[key]))\r\n ) : (x === y);\r\n}\r\n\r\n// 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, b: 2 } } };\r\nwindow.bar2 = { a: 1, b: 2, c: { a: 1, b: 3, c: { a: 1, b: 2 } } };\r\n\r\n// 3 levels deep\r\nwindow.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 } } };","TestCases":[{"Name":"Lodash lvl 1","Code":"_.isEqual(window.foo1, window.bar1)","IsDeferred":false},{"Name":"Native lvl 1","Code":"isEqual(window.foo1, window.bar1)","IsDeferred":false},{"Name":"Lodash lvl 2","Code":"_.isEqual(window.foo2, window.bar2)","IsDeferred":false},{"Name":"Native lvl 2","Code":"isEqual(window.foo2, window.bar2)","IsDeferred":false},{"Name":"Lodash lvl 3","Code":"_.isEqual(window.foo3, window.bar3)","IsDeferred":false},{"Name":"Native lvl 3","Code":"isEqual(window.foo3, window.bar3)","IsDeferred":false}]}