It will sort the item by the subtracted value by moving it that value lower or higher.
Here is some info:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
If compareFunction is supplied, the array elements are sorted
according to the return value of the compare function. If a and b are
two elements being compared, then:
- If compareFunction(a, b) is less than 0, sort a to a lower index than b, i.e. a comes first.
- If compareFunction(a, b) returns 0, leave a and b unchanged with respect to each other, but sorted with respect to all different
elements. Note: the ECMAscript standard does not guarantee this
behaviour, and thus not all browsers (e.g. Mozilla versions dating
back to at least 2003) respect this.
- If compareFunction(a, b) is greater than 0, sort b to a lower index than a.
- compareFunction(a, b) must always return the same value when given a specific pair of elements a and b as its two arguments. If
inconsistent results are returned then the sort order is undefined.
So, the compare function has the following form:
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
To compare numbers instead of strings, the compare function can simply
subtract b from a. The following function will sort the array
ascending (if it doesn't contain Infinity and NaN):
function compareNumbers(a, b) {
return a - b;
}