[FEATURE]: Function for checking if array is sorted should check whether the array is sorted in both ascending and descending order.
Motivation
I have been looking at the code for checking whether an array is sorted and this is the current implementation:
export function isSortedArray(arr: number[]): boolean {
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] >= arr[i + 1]) {
return false
}
}
return true
}
The code is working fine, but currently, it is only checking whether the passed array is sorted in ascending order, should we want to check whether the array is sorted in descending order then it will not be of much help.
Examples
Currently, the function checks whether an array is sorted, taking a single parameter: the array to evaluate. To enhance its functionality, I propose adding a second parameter that specifies the order to check for sorting. The second parameter should be a string such as:
-
ascto check whether the array is sorted in ascending order. -
descto check whether the array is sorted in descending order.
Here are some example:
isSortedArray([1, 2, 3, 5, 9], 'asc') // true
isSortedArray([1, 2, 3, 5, 9], 'desc') // false
isSortedArray([9, 5, 3, 2, 1], 'desc') // true
Possible workarounds
No response
I don't think that's a good idea. Rather, the function should just take an optional comparator, e.g. like Array.sort.
So, your idea is that the function should now be called with two parameters, the array to be sorted and and a callback function which will be the comparator?
isSortedArray([3, 2, 1], (a, b) => b - a); // true
isSortedArray([1, 2, 3], (a, b) => b - a); // false
So, your idea is that the function should now be called with two parameters, the array to be sorted and and a callback function which will be the comparator?
isSortedArray([3, 2, 1], (a, b) => b - a); // true isSortedArray([1, 2, 3], (a, b) => b - a); // false
Yes (your example should have a different comparator in the second line btw). But the comparator should default to something sensible (such that it checks whether the array is sorted ascendingly by default, just like Array.sort sorts ascendingly by default).
export function isSortedArray(a:Array
I am running with an assumption that the array is sorted but the function is there to find the sorted array is in ascending or decending order