{"ScriptPreparationCode":"var numOfStrings = 100000\r\nvar suffix = \u0027TestStringHere\u0027\r\nvar suffixLength = suffix.length\r\nvar negSuffixLength = suffixLength * -1\r\nvar testStrings = []\r\n\r\n// Generate test string as a UUID \u002B the suffix above.\r\nfunction uuidv4() {\r\n return \u0027xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\u0027.replace(/[xy]/g,\r\n function(c) {\r\n var uuid = Math.random() * 16 | 0, v = c == \u0027x\u0027 ? uuid : (uuid \u0026 0x3 | 0x8);\r\n return uuid.toString(16);\r\n });\r\n}\r\n\r\nfor (let i = 0; i \u003C numOfStrings; i\u002B\u002B) {\r\n testStrings.push(uuidv4() \u002B suffix)\r\n}","TestCases":[{"Name":"Using String.replace()","Code":"testStrings.map(str =\u003E {\r\n return str.replace(suffix, \u0027\u0027)\r\n})","IsDeferred":false},{"Name":"Using String.substring() with a lastIndexOf() search","Code":"testStrings.map(str =\u003E {\r\n return str.substring(0, str.lastIndexOf(suffix))\r\n})","IsDeferred":false},{"Name":"Using String.substring() with a magic number","Code":"testStrings.map(str =\u003E {\r\n return str.substring(0, str.length - suffixLength)\r\n})","IsDeferred":false},{"Name":"Using String.slice()","Code":"testStrings.map(str =\u003E {\r\n return str.slice(0, negSuffixLength)\r\n})","IsDeferred":false},{"Name":"Using String.slice() without a pre-calculated suffix length","Code":"testStrings.map(str =\u003E {\r\n return str.slice(0, suffix.length * -1)\r\n})","IsDeferred":false}]}