Can someone please explain to me, what’s going on with **function(a, b){return a-b});**

```
const numbers = [10, 7, 9, 5, 6, 3, 1, 8];
function arrange() {
return numbers.sort(**function(a, b){return a-b}**);
};
console.log(arrange());
```

Cheers!

Can someone please explain to me, what’s going on with **function(a, b){return a-b});**

```
const numbers = [10, 7, 9, 5, 6, 3, 1, 8];
function arrange() {
return numbers.sort(**function(a, b){return a-b}**);
};
console.log(arrange());
```

Cheers!

By default `sort()`

function sort values as string.However, if numbers are sorted as strings `"35"`

is bigger than `"100"`

, because `3`

is bigger than `1`

.

And because of this, sort() will produce incorrect result when sorting numbers.

But it can fix by providing a compare function to the sort().

the purpose of compare function is to define an alternative sort order.

if you have compare function for sort() as follows :

```
const numbers = [10, 7, 9, 5, 6, 3, 1, 8];
numbers.sort(function(a, b){return a-b})
```

If compare function returns negative value then a is sorted before b.

Else if compare function returns positive value then b is sorted before a.

Else compare function returns 0 then no changes are done with the sort order of the two values.

1 Like