## 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, sort`a`

to an index lower 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 an index lower than`a`

(i.e.`b`

comes first). -
`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.