vl - sorting arrays
Sorting in JavaScript: The Array Object and Custom Sort Function
Overview of Array Sorting
The
sortfunction in JavaScript is used to sort the elements of an array.It can accept a custom function as an argument to determine the order of the sort.
Rules for the Custom Sort Function
The custom sort function must adhere to specific rules:
It should return:
A negative value if the first argument is less than the second (indicating the first element comes before the second in the sorted order).
A zero if they are equal (indicating equal elements).
A positive value if the first argument is greater than the second (indicating the first element comes after the second).
Function Behavior and Return Values
Example of values and expected return:
If
a>b, return 1.If
a<b, return -1.If
a==b, return 0.
Implementation Example
Initial array example:
data = [30](array containing a single element).The
sortfunction iteratively compares the elements.For an array with multiple elements, such as:
data = [10, 20]:The custom function compares 10 and 20:
If it returns a negative value, 10 is considered less than 20.
If it returns a positive value, 10 is considered more than 20.
Example Function for Sorting
A simple function that can be passed to
sort:
function compare(a, b) {
return a - b;
}
This function subtracts b from a.
Example for numeric comparison:
If
a = 40andb = 100:The function returns
40 - 100 = -60(indicating 40 comes before 100).
If
a = 100andb = 40:The function returns
100 - 40 = 60(indicating 100 comes after 40).
Real Time Example of Sorting with Node.js
Setting up the Data Array:
Example array:
data = [1, 2, 3, 8, 6, 3, 3, 1, 0, 9].
let data = [1, 2, 3, 8, 6, 3, 3, 1, 0, 9];
Using Native Sort:
Calling
data.sort()without a custom function will sort the elements based on string conversion:Result:
[1, 0, 2, 3, 3, 3, 6, 8, 9]Explanation: Sorting is based on lexicographical order which distorts numerical values (the number '10' is seen as '1').
Sorting in Descending Order:
To sort in descending order, use a custom function that reverses the comparison.
Example of custom function:
function backSource(a, b) {
return b - a;
}
Sorting call:
data.sort(backSource);
Result:
[9, 8, 6, 3, 3, 3, 2, 1, 1, 0]This effectively reverses the ascending sort order.
Using Anonymous Functions:
The sort function can also accept an anonymous function:
data.sort(function (a, b) {
return b - a;
});
This will yield the same result as above.
Conclusion
Understanding these principles allows you to control sorting behavior in JavaScript arrays effectively, utilizing either named or anonymous functions to suit your specific needs.