JavaScript: Sort an Array of Strings or Numbers
Sorting an array is one of those classic tasks in computer science that’s always good to review once in a while.
If you want to sort an array alphabetically (also known as lexical order) you can use the built-in sort() method.
const arr = ['Billy', 'Bob', 'Alice'];
arr.sort(); // ['Alice', 'Billy', 'Bob']
arr.sort().reverse(); // ['Bob', 'Billy', 'Alice']
For an array of integers you need to use the optional compareFunction
that comes along with sort()
. It specifies a function that defines the default order. In other words, we need to provide this function ourself.
Given two elements a
and b
being compared in compareFunction
, if the result is less than 0, a
comes first. If the result is greater than 0, b
comes first.
Therefore to sort in ascending order we use a - b
but for descending order we use b - a
.
const numArr = [1, 5, 0, 11, 25, 40];
numArr.sort(); // [0, 1, 11, 25, 40, 5]
numArr.sort((a,b) => a - b); // [0, 1, 5, 11, 25, 40]
numArr.sort((a,b) => b - a); // [40, 25, 11, 5, 1, 0]
Want to improve your JavaScript? I have a list of recommended JavaScript books.