Functional Programming: Sort an Array Alphabetically using the sort Method
The solution provided doesn’t work:
function alphabeticalOrder(arr) {
// Add your code below this line
return arr.sort(function(a,b) {
return a > b;
});
// Add your code above this line
}
alphabeticalOrder(["a", "d", "c", "a", "z", "g"]);
This solution works:
function alphabeticalOrder(arr) {
// Add your code below this line
return arr.sort(function(a,b) {
if (a > b) return 1;
if (a == b) return 0;
if (a < b) return -1;
});
// Add your code above this line
}
alphabeticalOrder(["a", "d", "c", "a", "z", "g"]);
Reason (from MDN web docs):
If compareFunction
is supplied, all non- undefined
array elements are sorted according to the return value of the compare function (all undefined
elements are sorted to the end of the array, with no call to compareFunction
). If a
and b
are two elements being compared, then:
- If
compareFunction(a, b)
is less than 0, sorta
to an index lower thanb
(i.e.a
comes first). - If
compareFunction(a, b)
returns 0, leavea
andb
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, sortb
to an index lower thana
(i.e.b
comes first). -
compareFunction(a, b)
must always return the same value when given a specific pair of elementsa
andb
as its two arguments. If inconsistent results are returned then the sort order is undefined.