{"ScriptPreparationCode":"var params = Array.from({length: 30}).reduce((p, n, i) =\u003E {\r\n p[\u0027key\u0027 \u002B i] = \u0027value\u0027 \u002B i;\r\n return p;\r\n}, {});\r\n\r\nfunction runTest(fn, cnt) {\r\n\twhile(cnt--) {fn();}\r\n}","TestCases":[{"Name":"Deep Clone","Code":"function fixParams(params) {\r\n const token = \u0027xxxxxxxxxxxxxxxxxxxx\u0027;\r\n if (typeof params === \u0027object\u0027 \u0026\u0026 token) {\r\n try {\r\n const reg = new RegExp(token, \u0027g\u0027);\r\n const str = JSON.stringify(params);\r\n str.replace(reg, \u0027yyyyyyyyyyyyy\u0027);\r\n params = JSON.parse(str);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n return params;\r\n}\r\n\r\nrunTest(() =\u003E fixParams(params), 100000)","IsDeferred":false},{"Name":"Iterate All keys","Code":"function deepReplace(params, regex, replacement) {\r\n for (let key in params) {\r\n if (typeof params[key] === \u0027object\u0027) {\r\n deepReplace(params[key], regex, replacement);\r\n } else if (regex.test(params[key])) {\r\n params[key] = params[key].replace(regex, replacement);\r\n }\r\n }\r\n}\r\n\r\nfunction fixParams(params) {\r\n const token = \u0027xxxxxxxxxxxxxxxxxxxx\u0027;\r\n if (typeof params === \u0027object\u0027 \u0026\u0026 token) {\r\n try {\r\n const reg = new RegExp(token, \u0027g\u0027);\r\n params = deepReplace(params, reg, \u0027yyyyyyyyyyyyy\u0027);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n return params;\r\n}\r\n\r\nrunTest(() =\u003E fixParams(params), 100000)","IsDeferred":false},{"Name":"Deep Clone, but not parse","Code":"function fixParams(params) {\r\n const token = \u0027xxxxxxxxxxxxxxxxxxxx\u0027;\r\n if (typeof params === \u0027object\u0027 \u0026\u0026 token) {\r\n try {\r\n const reg = new RegExp(token, \u0027g\u0027);\r\n const str = JSON.stringify(params);\r\n if (reg.test(str)) {\r\n str.replace(reg, \u0027yyyyyyyyyyyyy\u0027);\r\n params = JSON.parse(str);\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n return params;\r\n}\r\n\r\nrunTest(() =\u003E fixParams(params), 100000)","IsDeferred":false}]}