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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s