{"ScriptPreparationCode":"function generateRandomString(length) {\r\n const characters = \u0027ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\u0027;\r\n let result = \u0027\u0027;\r\n const charactersLength = characters.length;\r\n for (let i = 0; i \u003C length; i\u002B\u002B) {\r\n result \u002B= characters.charAt(Math.floor(Math.random() * charactersLength));\r\n }\r\n return result;\r\n}\r\n\r\nfunction generateData(numStrings) {\r\n const stringArray = [];\r\n const minLength = 3;\r\n const maxLength = 20;\r\n\r\n for (let i = 0; i \u003C numStrings; i \u002B= 1) {\r\n stringArray.push(generateRandomString(minLength \u002B Math.floor(Math.random() * (maxLength - minLength))));\r\n }\r\n \r\n return stringArray;\r\n}\r\n\r\nconst initialData = generateData(1000);","TestCases":[{"Name":"built-in sort (CASE SENSITIVE)","Code":"const data = initialData.slice();\r\ndata.sort();","IsDeferred":false},{"Name":"localeCompare base sort","Code":"const data = initialData.slice();\r\ndata.sort((l, r) =\u003E (l || \u0027\u0027).localeCompare((r || \u0027\u0027), undefined, {sensitivity: \u0027base\u0027}));","IsDeferred":false},{"Name":"toLowerCase simple sort","Code":"const data = initialData.slice();\r\ndata.sort((a, b) =\u003E {\r\n a = a.toLowerCase();\r\n b = b.toLowerCase();\r\n if (a === b) {\r\n return 0;\r\n } else if (a \u003C b) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n});","IsDeferred":false},{"Name":"toLowerCase with manual compare sort","Code":"const data = initialData.slice();\r\ndata.sort((a, b) =\u003E {\r\n a = a.toLowerCase();\r\n b = b.toLowerCase();\r\n for (let i = 0; i \u003C a.length \u0026\u0026 i \u003C b.length; i \u002B= 1) {\r\n if (a[i] !== b[i]) {\r\n if (a[i] \u003C b[i]) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n }\r\n }\r\n if (a.length == b.length) {\r\n return 0;\r\n } else if (a.length \u003C b.length) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n});","IsDeferred":false},{"Name":"manual ascii compare sort","Code":"const data = initialData.slice();\r\ndata.sort((a, b) =\u003E {\r\n for (let i = 0; i \u003C a.length \u0026\u0026 i \u003C b.length; i \u002B= 1) {\r\n let l = a.charCodeAt(i);\r\n let r = b.charCodeAt(i);\r\n if (l \u003E= 65 \u0026\u0026 l \u003C 91) {\r\n l \u002B= 32;\r\n }\r\n if (r \u003E= 65 \u0026\u0026 r \u003C 91) {\r\n r \u002B= 32;\r\n }\r\n if (l !== r) {\r\n if (l \u003C r) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n }\r\n }\r\n if (a.length == b.length) {\r\n return 0;\r\n } else if (a.length \u003C b.length) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n});","IsDeferred":false}]}