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: