{"ScriptPreparationCode":"var obj = {};\r\nvar objCount = 100;\r\n\r\nfor (let i = 0; i \u003C objCount; i\u002B\u002B) {\r\n obj[i] = [1, 2, 3];\r\n}\r\n\r\nfunction deepClone(objIn) {\r\n let copy;\r\n\r\n if (objIn === null || typeof objIn !== \u0027object\u0027) {\r\n return obj;\r\n }\r\n\r\n if (objIn instanceof Array) {\r\n copy = [];\r\n for (let i = 0, len = objIn.length; i \u003C len; i\u002B\u002B) {\r\n copy[i] = deepClone(objIn[i]);\r\n }\r\n return copy;\r\n }\r\n\r\n if (objIn instanceof Object) {\r\n copy = {};\r\n for (const attr in objIn) {\r\n if (objIn.hasOwnProperty(attr)) {\r\n copy[attr] = deepClone(objIn[attr]);\r\n }\r\n }\r\n return copy;\r\n }\r\n\r\n}\r\n\r\nfunction deepMerge(target, ...sources) {\r\n if (!sources.length) return target\r\n const source = sources.shift()\r\n\r\n if (isObject(target) \u0026\u0026 isObject(source)) {\r\n for (const key in source) {\r\n if (isObject(source[key])) {\r\n if (!target[key]) Object.assign(target, {[key]: {}})\r\n deepMerge(target[key], source[key])\r\n } else {\r\n Object.assign(target, {[key]: source[key]})\r\n }\r\n }\r\n }\r\n\r\n return deepMerge(target, ...sources)\r\n}\r\n\r\nfunction isObject(obj) {\r\n return obj \u0026\u0026 typeof obj === \u0022object\u0022 \u0026\u0026 !Array.isArray(obj) \r\n}","TestCases":[{"Name":"DeepClone","Code":"var clone = deepClone(obj);","IsDeferred":false},{"Name":"JSON.stringify","Code":"var clone = JSON.parse(JSON.stringify(obj));","IsDeferred":false},{"Name":"deepMerge","Code":"var clone = deepMerge({}, obj)","IsDeferred":false}]}