Performing a Case-Insensitive Sort on an Array of Strings

I recently released a tutorial on the All Things JavaScript YouTube channel that dealt with higher order functions. Within the tutorial I used an example that dealt with forcing the sort method of Arrays to do a true alphabetic sort. By itself, sort does not do this.

Here is the problem with sort. Lets say I have an array of strings like this:

let things = [‘Building’, ‘Car’, ‘house’, ‘tree’, ‘bicycle’, ‘automobile’];

It will not sort correctly if I use:

things.sort();

The reason is that I have a mixture of upper and lowercase characters. The uppercase characters will sort first and we end up with this.

‘Building’, ‘Car’, ‘automobile’, ‘bicycle’, ‘house’, ‘tree’

The solution is pretty simple; we just need to sort with the correct case. However, executing on that solution is not quite as simple. There are a number of different ways to do this. In the tutorial I chose to take advantage of a little known feature of sort; you can pass in a function to the sort method that can be used to determine the sort order. That makes sort a higher order function, and that was the reason I was using it as an example in the tutorial.

The end result is kind of cool.

If you would like to understand higher order function better or you are interested in the sort solution, take a look at this tutorial.

Author: Steven Hancock

Steven has 20+ years experience in product development and 15+ years using JavaScript. He started learning JavaScript when it was a niche language used for minor affects on a web site. The growth and ubiquitous nature of JavaScript both excites and inspires him. Currently he is President and lead Trainer at All Things JavaScript, a resource for anyone and everyone that hopes to increase their JavaScript skills. Steven was the co-owner of Rapid Intake, an eLearning Authoring firm. While there he managed all development and professional service related activities. He was heavily involved in the initial development of Rapid Intake's main product, which eventual lead to its acquisition in 2011. In addition to JavaScript, Steve has also dabbled in other web technolgies such as ActionScript, ASP, PHP, HTML, and CSS.