{"ScriptPreparationCode":"function getRandomInt(max) {\r\n return Math.floor(Math.random() * Math.floor(max));\r\n}\r\n\r\nvar arr = [];\r\nfor(var i = 0; i \u003C 100000; i\u002B\u002B){\r\n arr.push({value:getRandomInt(100)});\r\n}\r\n\r\nfunction generateRandomString(length) {\r\n var characters = \u0027ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\u0027;\r\n return Array.from({ length }, () =\u003E characters.charAt(Math.floor(Math.random() * characters.length))).join(\u0027\u0027);\r\n}\r\n\r\nvar arrStr = Array.from({ length: 100000 }, () =\u003E ({value: generateRandomString(10)}));\r\n\r\nfunction orderBy(arr, props, orders) {\r\n return arr.slice().sort((a, b) =\u003E {\r\n for (let i = 0; i \u003C props.length; i\u002B\u002B) {\r\n const prop = props[i];\r\n const order = orders \u0026\u0026 orders[i] ? orders[i] : \u0027asc\u0027;\r\n \r\n // Handle prop as a function or a string\r\n const valueA = typeof prop === \u0027function\u0027 ? prop(a) : a[prop];\r\n const valueB = typeof prop === \u0027function\u0027 ? prop(b) : b[prop];\r\n\r\n // Normalize string values for case-insensitive comparison\r\n const normalizedA = typeof valueA === \u0027string\u0027 ? valueA.toLowerCase() : valueA;\r\n const normalizedB = typeof valueB === \u0027string\u0027 ? valueB.toLowerCase() : valueB;\r\n\r\n if (normalizedA \u003C normalizedB) return order === \u0027asc\u0027 ? -1 : 1;\r\n if (normalizedA \u003E normalizedB) return order === \u0027asc\u0027 ? 1 : -1;\r\n }\r\n return 0;\r\n });\r\n}\r\n\r\nfunction compareStringFn(a, b) {\r\n if (a \u003C b) {\r\n return -1;\r\n } else if (a \u003E b) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nfunction compareNumbersFn(a, b) {\r\n return a - b\r\n}\r\n\r\nfunction quickSort(arr, left = 0, right = arr.length - 1) {\r\n if (left \u003C right) {\r\n const pivotIndex = randomPartition(arr, left, right);\r\n quickSort(arr, left, pivotIndex - 1);\r\n quickSort(arr, pivotIndex \u002B 1, right);\r\n }\r\n}\r\n\r\nfunction randomPartition(arr, left, right) {\r\n const pivotIndex = Math.floor(Math.random() * (right - left \u002B 1)) \u002B left;\r\n swap(arr, pivotIndex, right);\r\n return partition(arr, left, right);\r\n}\r\n\r\nfunction partition(arr, left, right) {\r\n const pivot = arr[right].value;\r\n let i = left - 1;\r\n\r\n for (let j = left; j \u003C right; j\u002B\u002B) {\r\n if (arr[j].value \u003C pivot) {\r\n i\u002B\u002B;\r\n swap(arr, i, j);\r\n }\r\n }\r\n\r\n swap(arr, i \u002B 1, right);\r\n return i \u002B 1;\r\n}\r\n\r\nfunction swap(arr, i, j) {\r\n const temp = arr[i].value;\r\n arr[i].value = arr[j].value;\r\n arr[j].value = temp;\r\n}","TestCases":[{"Name":"_.orderBy asc","Code":"_.orderBy(arr,(el) =\u003E el.value, \u0022asc\u0022);","IsDeferred":false},{"Name":"array.prototype.sort asc","Code":"arr.sort((a,b) =\u003E compareNumbersFn(a.value,b.value));","IsDeferred":false},{"Name":"_.orderBy desc","Code":"_.orderBy(arr,(el) =\u003E el.value, \u0022desc\u0022);","IsDeferred":false},{"Name":"array.prototype.sort desc","Code":"arr.sort((a,b) =\u003E compareNumbersFn(b.value,a.value));","IsDeferred":false},{"Name":"array.prototype.sort desc \u002B check type","Code":"arrStr.sort((a,b) =\u003E compareStringFn(b.value,a.value));","IsDeferred":false},{"Name":"array.prototype.sort asc \u002B check type","Code":"arrStr.sort((a,b) =\u003E compareStringFn(a.value,b.value));","IsDeferred":false},{"Name":"_.orderBy asc st","Code":"_.orderBy(arrStr,(el) =\u003E el.value, \u0022asc\u0022);","IsDeferred":false},{"Name":"_.orderBy desc st","Code":"_.orderBy(arrStr,(el) =\u003E el.value, \u0022desc\u0022);","IsDeferred":false},{"Name":"quickSort","Code":"quickSort(arrStr)","IsDeferred":false}]}