Rhythm & Binary

How to Implement Sort in JavaScript

Sometimes in Software Engineering you run across code that is so elegant that you have to write about it.

I was recently working with a project that uses an array of values that needed to be sorted by date. The array was read in from a Json file.

In JavaScript to sort an array you can just use the standard array.sort method. If you want to do custom sorting you could do something like the following:

compare( a, b ) {
  // sort descending
  if ( a.score < b.score ) {
    return 1;
  }
  if ( a.score > b.score ) {
    return -1;
  }
  return 0;
}

The JavaScript sorting method takes advantage of the following relationship (credit geeksforgeeks.com for this):

compareFunction(a, b) < 0;

Then a comes before b in the answer.

compareFunction(a, b) > 0;

Then b comes before a in the answer.

compareFunction(a, b) = 0;

Then the order of a and b remains unchanged.

Here we come to the elegant part. So in the project I was working on, I needed to sort the array by date. Since all I need to be concerned with was a negative, postiive, or 0 value I could do the following:

// sort by date here
posts.sort(function (a, b) {
  return new Date(b.pubDate) - new Date(a.pubDate);
});

So in the one line of code

return new Date(b.pubDate) - new Date(a.pubDate);

I was able to sort the array by taking advantage of the built in JavaScript functionality. I have to credit this to the stack overflow article I found here.

So this post is rather short, but just wanted to mention it because I thought it was cool how such little code could accomplish so much.

Hope this helped or at least highlighted something cool you didn’t know before.