Java Reference
In-Depth Information
The reason for this is that the numbers are converted into strings and then placed in alpha-
betical order.
So how do you sort an array of numerical values? The answer is to provide a callback func-
tion to the
sort()
method that tells the
sort()
method how to compare two values,
a
and
b
. The callback function should return the following:
• a negative value if
a
comes before
b
•
0
if
a
and
b
are in the same position
• a positive value if
a
comes after
b
Here is an example of a
compareNumbers
function that can be used as a callback to sort
numbers:
function compareNumbers(a,b){
return a-b;
}
This simply subtracts the two numbers that are being compared, giving a result that is either
negative (if
b
is bigger than
a
), zero (if
a
and
b
are the same value), or positive (if
a
is
bigger than
b
). This means that it can be used as a callback to sort the array of numbers
correctly:
> [1,3,12,5,23,18,7].sort(compareNumbers);
<< [1, 3, 5, 7, 12, 18, 23]
Much better!
Note: Watch Out For Overflows
In some rare instances where an array includes some very large and negative
numbers, an overflow error can occur and the result of
a-b
becomes smal-
ler than the smallest number that JavaScript is able to cope with. If this is
the case, the following function can be used as a callback instead:
