I need to sort an array in ascending order and to put all zeros in the end.

For example [0, 0, 0, 3, 2, 1] needs to be sorted to [1, 2, 3, 0, 0, 0].

This is my code, what do I need to add to make sure all zeros are at the end?

``function sort_by_field(array, field){return array.sort(function(a, b){if( a[field] > b[field] ){return 1;}if( a[field] < b[field] ){return -1;}return 0;});}``

Any help will be appreciated.

You can do something like this:

``````[0, 0, 0, 3, 2, 1].sort(function(a,b){
if(a === 0) return 1;
else if(b === 0) return -1;
else return a - b;
});
``````

Just check the special cases for zero before your other comparisons. So the comparison function might look like this:

``````function(a, b) {
if (a === b)
return 0;
if (a === 0)
return 1;
else if (b === 0)
return -1;

//the rest of the comparison logic
}
``````

It's vitally important for some sorting algorithms that the comparison function is super consistent, so that's why I've gone to the extra trouble of comparing both are equal at the very beginning.

You can do something like:

``````document.write([0, 0, 0, 3, 2, 1].sort(function (a, b) {
return +!a || -!b || a - b;
}));``````

Top